无法读取未定义“填充”的属性 - NodeJS、Mongoose

问题描述 投票:0回答:1

创建新消息时,我立即想要

populate
消息文档并将其发送回用户。但是,当我执行
message.populate()
时,我收到一条错误消息,指出
populate
未定义。

这是我的代码:

let message = await createMessage(chatId, req.user._id, messageText)
// Error thrown here when trying to populate the message
await message.populate({ path: "sender" })


async function createMessage(chatId, senderId, messageText) {
        let message = await Message.create({
            sender: senderId,
            chat: chatId,
            messageText,
        )}
   
        return message
}

为什么

populate
未定义?谢谢。

javascript node.js mongoose
1个回答
0
投票

您的代码的问题似乎是您试图直接调用消息对象上的

populate
方法,但 populate 方法是 Mongoose 查询的功能,而不是单个文档。

您需要调整代码以使用 Mongoose 查询进行人口统计。 具体方法如下:

let message = await createMessage(chatId, req.user._id, messageText)
// Error thrown here when trying to populate the message
message = await Message.findById(message._id).populate('sender').exec();

async function createMessage(chatId, senderId, messageText) {
    let message = await Message.create({
        sender: senderId,
        chat: chatId,
        messageText,
    });
   
    return message;
}
© www.soinside.com 2019 - 2024. All rights reserved.