MongoDB:为啥这个存储的 JS 函数没有返回值?
Posted
技术标签:
【中文标题】MongoDB:为啥这个存储的 JS 函数没有返回值?【英文标题】:MongoDB: Why doesn't this stored JS function return a value?MongoDB:为什么这个存储的 JS 函数没有返回值? 【发布时间】:2021-06-05 10:19:46 【问题描述】:考虑这个虚拟函数:
db.system.js.save(
_id:"findId",
value:function()
var doc = db.test.find("_id": "1")
return doc['_id']
)
运行它时,我一无所获。
但是,如果我只是 return db.test.find("_id": "1")
我确实会得到文档。
有什么区别?
更广泛的问题:我可以在服务器端执行任意 JS 代码吗?
例如,我想检索一个文档并有一些 if-else 逻辑
【问题讨论】:
【参考方案1】:db.test.find("_id": "1")
返回Promise
,并且您不会在返回数据之前等待它解决。所以,当你返回doc['_id']
时,doc
就是undefined
。因此,您应该在 Promise 解决后返回该值。你可以这样做:
db.test.find("_id": "1").then((document) =>
return document .id;
)
【讨论】:
以上是关于MongoDB:为啥这个存储的 JS 函数没有返回值?的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个函数序言中没有“sub rsp”指令,为啥函数参数存储在负 rbp 偏移处?
为啥这个函数序言中没有“sub rsp”指令,为啥函数参数存储在负 rbp 偏移量?
为啥我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?