当$ push时,猫鼬将数据保存两次

时间:2018-11-27 09:45:28

标签: mongodb mongoose

我正在尝试使用$ push将数据保存在数组中, 但这最终将其保存了两次。

编辑:我想向会话添加一条消息,如果该会话不存在,请创建该会话并添加消息。

我正在使用的代码

spark.sql("""
  SELECT TO_DATE(CAST(UNIX_TIMESTAMP('20180811', 'yyyyMMdd') AS TIMESTAMP)) AS newdate"""
).show()

Output:

+----------+ | newdate| +----------+ |2018-08-11| +----------+

正在从此代码中调用

  public async addMessageToSession(message: ChatMessageModel, sessionId: string) {
    console.log('adding message to db');
    console.log('message', message);
    // console.log('sessionId', sessionId);
    const addMessage = await ChatSession.findOneAndUpdate(
        { sessionId: sessionId },
        {
            sessionId: sessionId,
            userId: [message.receiverId, message.senderId],
            $push: { chatMessage: message }
        },
        { upsert: true, new: true },
        (err, data) => {
            if (err) { console.log('error', err) }
            console.log('data', data);
        });
    return addMessage;
}

我只看到addMessageToSession函数被调用两次。 我知道它一定与异步有关,但我无法弄清楚。

决定在这里也添加我的模式

this.sessionController.addMessageToSession(message,session.sessionId)
.then(() => {
   onlineUsers.forEach((onlineUser: OnlineUser) => {
     if (onlineUser.userId === message.receiverId || 
     onlineUser.userId ===message.senderId) 
   {  
     this.getSessionsByUser(onlineUser);
   }
  })
})

0 个答案:

没有答案