【发布时间】:2020-05-20 16:47:00
【问题描述】:
我正在构建一个与 mongo 数据库一起工作的后端程序,但我无法从 mongoose 查询返回要在代码中使用的变量。异步管理网一定有问题。
我已经用非常简单的代码总结了我想要做的事情:我必须从 ID 中找到名称并使用它。
想象有一些 Thing 类型的架构:
const ThingSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String
}
在路由器中我有一个获取请求:
router.get('/:id', (req, res, next) => {
const id = req.params.id;
const name = findName(id);
console.log(name);
res.status(200).json({name: name});
});
所以我创建了查找名称的函数
function findName(id){
var name = Thing.findById(id)
.exec()
.then(docs =>{
var string = "the name is: " + docs.name;
return string
});
return name
}
当我发送带有有效 id 的 GET 请求时,它给了我:
在日志中:Promise { }
并且 obv 响应:{ "name": {} }
我不傻,我已经搜索了几十个主题和官方指南,做了各种尝试,但我不知道怎么做。
(抱歉英语不好,我来自意大利)
【问题讨论】:
标签: node.js asynchronous mongoose promise return-value