我正在尝试使用$ 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);
}
})
})