MongoDB:为什么这个存储的JS函数return没有一个值?
MongoDB: Why doesn't this stored JS function return a value?
考虑这个虚拟函数:
db.system.js.save({
_id:"findId",
value:function(){
var doc = db.test.find({"_id": "1"})
return doc['_id']
}
})
当 运行 它时,我在 return 中什么也得不到。
但是,如果我 return db.test.find({"_id": "1"})
我确实得到了文件。
有什么区别?
更广泛的问题:我可以在服务器端执行任意 JS 代码吗?
例如,我想检索文档并有一些 if-else 逻辑
db.test.find({"_id": "1"})
returns Promise
,并且您不会在 returning 数据之前等待它解决。所以,当你 return doc['_id']
时,doc
就是 undefined
。因此,您应该 return Promise 解析后的值。你可以这样做:
db.test.find({"_id": "1"}).then((document) => {
return document .id;
})
考虑这个虚拟函数:
db.system.js.save({
_id:"findId",
value:function(){
var doc = db.test.find({"_id": "1"})
return doc['_id']
}
})
当 运行 它时,我在 return 中什么也得不到。
但是,如果我 return db.test.find({"_id": "1"})
我确实得到了文件。
有什么区别?
更广泛的问题:我可以在服务器端执行任意 JS 代码吗?
例如,我想检索文档并有一些 if-else 逻辑
db.test.find({"_id": "1"})
returns Promise
,并且您不会在 returning 数据之前等待它解决。所以,当你 return doc['_id']
时,doc
就是 undefined
。因此,您应该 return Promise 解析后的值。你可以这样做:
db.test.find({"_id": "1"}).then((document) => {
return document .id;
})