【发布时间】:2021-04-14 18:28:34
【问题描述】:
我映射到一个对象数组并为“latestMessage”添加一个值
latest() 函数搜索消息并返回和对象。但是地图的结果不包含新的属性。如果我删除了最新的函数并只输入一个字符串,尽管它可以工作。
function latest(userId) {
Chat.findOne({ $or: [{ to: userId }, { from: userId }] }, {}, { sort: { createdAt: -1 } }, function (err, msg) {
return msg
})
}
不起作用:
let array = users.map(v => ({ ...v._doc, latestMessage: latest(v._id) }))
作品:
let array = users.map(v => ({ ...v._doc, latestMessage: {test: 'test'} }))
【问题讨论】:
-
如果你记录
latest(v._id)会返回什么? -
它返回未定义。但是,如果我控制台登录该函数,它会返回我想要的对象。
-
stackoverflow.com/questions/7033331/how-to-use-mongoose-findone 看来您可能需要为此使用
async/await。
标签: javascript arrays object mongoose mapping