node.js - NodeJS 创建一个从 MongoDB 返回文档的函数
问题描述
我不确定这是否可行,但我正在使用 NodeJS,并且我正在尝试创建一个从 MongoDB 返回文档的函数。我的代码目前看起来像这样,但返回未定义:
const GetUser = (userId) => {
let userData
User.aggregate([
{ $match: {_id: mongoose.Types.ObjectId(userId)} },
{
$project: {
"_id": 0,
"originId": 1,
"type": 1,
"poster": 1,
"content": 1,
"createdAt": 1,
"updatedAt" : 1
}
}
]).exec((err, res) => {
if(err) {
return err
}
else {
userData = res
}
})
return userData
}
解决方案
你可以这样做。您只需返回您的聚合查询,它就会返回一个承诺。
const GetUser = userId => {
let userData;
return User.aggregate([
{ $match: { _id: mongoose.Types.ObjectId(userId) } },
{
$project: {
_id: 0,
originId: 1,
type: 1,
poster: 1,
content: 1,
createdAt: 1,
updatedAt: 1
}
}
]);
};
我不确定您是否需要.exec()
这里,但是您可以尝试使用或不使用。
稍后您可以像这样使用您的功能:
因为它是一个承诺,你可以使用.then()
它:
GetUser(id).then(response => {
console.log(response)
})
async
或者如果您在函数中使用它:
let user = await GetUser(id);
console.log(user);
推荐阅读
- liferay - 当参数值包含“.”时,Liferay 友好 URL 无法识别 (句号/点)
- c - 旋转 1bpp 位图数据
- java - 当我单击 jar 文件时,如何使此代码在 CMD 中运行
- java - Splunk 和 JMeter 百分位数的差异
- swift - UInt8 的 Swift offset(of:) 有 2 个字节的偏移量
- python - 在 sympy 中使用带自动换行的赋值
- arrays - 将数组的元素分解为一个独立的数组
- javascript - javascript 使用输入值更新 setInterval
- xsl-fo - 如何在 XSL-FO 中使用不同的字体类型?
- java - ActiveMQ 不接收具有 blob 属性的实体