2011-10-09 13 views
5

Khi tôi chạy dưới đây được lưu trữ hàm JavaScript tôi nhận được lỗi:MongoDB: Lỗi thực thi được lưu trữ hàm 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)") 

Dưới đây là các lỗi:

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

Tại sao? Làm ơn giúp tôi?

Trả lời

10

Hàm find() trả về một con trỏ, không thể trả về từ JavaScript. suggested workaround là sử dụng toArray() để nhận giá trị trả về mảng.

Ví dụ ... trước:

> 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" } 

cũng giống như bạn mô tả.
Và sau:

> 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

Điều này thật tuyệt vời. Cảm ơn nhiều. – Zeck

+0

Bạn được chào đón! Hạnh phúc tôi có thể giúp. :) – dampier