2011-10-09 13 views
5

Kiedy biegnę poniżej funkcji składowanej JavaScript otrzymuję błędy:MongoDB: Błąd podczas wykonywania przechowywane funkcji JavaScript

> db.system.js.save({_id:"last_n_users", value: function(n){return db.users.find().sort({created_at:-1}).limit(n)}}) 
> db.eval("last_n_users(10)") 

Oto błędy:

{ "value" : "DBQuery: store.users -> undefined" } 

Dlaczego? Proszę pomóż mi?

Odpowiedz

10

Funkcja find() zwraca kursor, którego nie można zwrócić z JavaScript. Parametr suggested workaround służy do uzyskiwania wartości zwracanej przez tablicę za pomocą metody toArray().

... zanim Przykład:

> use admin 
switched to db admin 
> db.system.js.save({ _id : "foo", value: function(n){return db.system.indexes.find().limit(n)} })   
> db.eval("foo(3)")                    
{ "value" : "DBQuery: admin.system.indexes -> undefined" } 

tak jak opisujesz.
Po:

> db.system.js.save({ _id : "foo", value: function(n){return db.system.indexes.find().limit(n).toArray()} }) 
> db.eval("foo(3)")                       
[ 
     { 
       "name" : "_id_", 
       "ns" : "admin.system.users", 
       "key" : { 
         "_id" : 1 
       } 
     }, 
     { 
       "name" : "user_1", 
       "ns" : "admin.system.users", 
       "key" : { 
         "user" : 1 
       }, 
       "unique" : false 
     }, 
     { 
       "name" : "_id_", 
       "ns" : "admin.whee", 
       "key" : { 
         "_id" : 1 
       }, 
       "v" : 0 
     } 
] 
+0

To jest niesamowite. Dziękuję Ci bardzo. – Zeck

+0

Nie ma za co! Szczęśliwy, że mogę pomóc. :) – dampier

Powiązane problemy