我試圖更新一個socketId''每當用戶斷開連接。但不知何故,我總是收到此錯誤mongoose更新總是給我TypeError:不能設置屬性'__v'undefined
update.$setOnInsert[this.schema.options.versionKey] = 0;
^
TypeError: Cannot set property '__v' of undefined
例如我的目標,如果有人斷開
socketId = ZH_Ic0zD8QkmNYuJAAAE;
will be
socketId = '';
下面的代碼
socket.on('disconnect', function() {
console.log(socket.id);
var disconnectSocketId = '';
User.findOneAndUpdate({socketId: socket.id}, disconnectSocketId, {upsert: true, new: true}, function(err, doc) {
if (err) {
return console.error
}
console.log(doc.socketId);
});
});
感謝您花時間回答這個問題,我想更新socketId的原因是因爲我在User Schema中有socketId字段。所以,只要具有相同socketId值的特定用戶斷開連接,那麼我希望他的socketId爲空字符串或null。 –
目前我正在使用正常查找然後保存方法來解決這個問題 –
@JackMoscovi好的,但是您是否嘗試過使用'findOneAndUpdate'來修正參數化集?並且:如果用戶斷開連接,更新一個布爾型字段'valid'並且保持'socketId'的原始值不變更有意義嗎? – matthias