【发布时间】:2019-04-05 20:25:43
【问题描述】:
我想在 NodeJS 的 Mongo 数据库中获取插入文档的 _id。
首先我调用插入文档的函数
// First Function
router.post('/add', function(req, res) {
var db = req.db;
var collection = db.get('entrys');
var id = databaseAPI.createRecord(req, req.body.name);
console.log("Finished " + id)
});
我将下面第二个函数的返回值保存在 id 中,但是当我记录它时,我得到 [object Promise]
插入到不同 .js 文件中的函数:
//Second Function
createRecord: async function(req, name) {
var db = req.db;
var collection = db.get('entrys');
var objectToInsert = {
Name: name
};
collection.insert(objectToInsert, function(err){
if (err) {
return null;
console.log("err");
}
// Object inserted successfully.
console.log(objectToInsert._id) // This returns the ID
return objectToInsert._id; // This should return the ID to the first function but I get [object Promise]
我尝试与async 和await 一起玩,就像这个问题Promise is returning [object Promise] 的第一个答案一样,但如果我这样做,我会得到“未定义”而不是“[object Promise]”。
我对 JavaScript 还很陌生。也许有人可以指出我正确的方向。
编辑:
如果我这样做var id = await databaseAPI.createRecord(req, req.body.name)
我得到“SyntaxError: await is only valid in async function”
现在,如果我使函数异步,当我 console.log id 时,我会得到“未定义”。
【问题讨论】:
-
你的第二个函数不完整。但是通过查看它,它看起来就像您正在使用的库,使用回调而不是承诺。由于您在回调中返回值,因此它不会作为承诺返回。
标签: javascript node.js mongodb