Mongoose:更新文档并返回其中的特定部分

时间:2018-04-01 22:31:16

标签: javascript node.js mongoose

我正在构建一个简单的聊天应用。我的问题是,当我通过向消息数组添加消息来更新会话模型时,我不知何故需要将此消息与其_id& createdAt个字段(自动生成)。是否有可能使用mongoose?

我可以通过以下方式实现这一目标:

const { messages } = conversation;
const lastMessage = messages[messages.length - 1];

我更新模型的代码看起来像这样

conversation.messages.push({
  conversationId,
  sender: _id,
  body,
});

conversation.save((err, conversation) => {
  if (!err) {
    const { messages } = conversation;
    const message = messages[messages.length - 1];

    pubsub.publish('messageCreated', {
      messageCreated: message,
    });

    return message;
  }
});

我很好奇mongoose是否内置了这样的功能,或者我需要保留所有内容。我不确定我当前的解决方案是否有效,如果messages数组有数千条消息,它将正常工作

1 个答案:

答案 0 :(得分:1)

使用sudo service nginx restart操作:

update

在这种情况下会更有效率。但是如果你在一个对话上有很多读/写操作或者需要选择一些消息数组,那么你应该将消息移到分离的集合中。