Javascript 更新的Mongoose更新嵌套数组元素
我有以下模式Javascript 更新的Mongoose更新嵌套数组元素,javascript,node.js,mongodb,typescript,mongoose,Javascript,Node.js,Mongodb,Typescript,Mongoose,我有以下模式 UserSchema: Schema = new Schema({ username: String, password: String, chat: [{ lastSeen: { type: Date, default: Date.now }, room: { type: Schema.Types.ObjectId, ref: 'ChatRoom' } }], }); 我想对UserSchema使用静态方法,以便更新聊天室
UserSchema: Schema = new Schema({
username: String,
password: String,
chat: [{
lastSeen: { type: Date, default: Date.now },
room: {
type: Schema.Types.ObjectId, ref: 'ChatRoom'
}
}],
});
我想对UserSchema使用静态方法,以便更新聊天室[I].lastSeen(按给定的房间id)
我无法找到如何通过他的元素室获取聊天元素。\u id,然后更新它。有什么帮助吗
编辑
我的案例与建议的副本类似,但不同,因为那里的人知道所有id,而我不知道聊天。我正在发布解决方案,以防有人需要它
UserSchema.statics.lastSeen =
function lastSeen(username: string, roomId: number, date: Date) {
this.update({
username: username,
'chat.room': roomId
}, { $set: { 'chat.$.lastSeen': date }})
.exec();
};
@杰森:我一定读过这篇文章,但做不到。您能为我的具体案例提供一个代码吗?也适用于模型,例如Model.update,否。在这种情况下需要exec
UserSchema.statics.lastSeen =
function lastSeen(username: string, roomId: number, date: Date) {
this.update({
username: username,
'chat.room': roomId
}, { $set: { 'chat.$.lastSeen': date }})
.exec();
};