0
我遇到與Mongoose/MongoDB行爲我不明白。即使沒有指定用戶,Mongoose也會從數組中刪除用戶。Mongoose/MongoDB刪除模型的數組中的項目,但沒有說明哪個項目
這裏的模式:
var DocSchema = new Schema({
doc_id : String,
users: [String],
});
這裏是控制器從數組中刪除用戶:當我想從數組中刪除tom
exports.remove_user = function(req, res) {
doc_id = req.body.doc_id;
username = req.body.username;
Document.findOne({doc_id: doc_id}, function(err, doc_data) {
if (err) {
throw (err);
} else {
var users = doc_data.users;
var index = users.indexOf(username);
users.splice(index, 1);
doc_data.save(function(err) {
if (err) {
throw (err);
} else {
console.log('removed user from doc');
return res.send(doc_data);
}
});
}
});
};
這PUT請求工作正常(和只有tom
):
jQuery.ajax({
url: '/remove_user',
type: 'PUT',
data: {
'doc_id': 66865270,
'username': 'tom'
},
success: function(data, textStatus, jqXHR) {
console.log('Post response:');
console.dir(data);
console.log(textStatus);
console.dir(jqXHR);
}
});
但是,假設tom
不存在,或者已經從數組中移除,那麼當我使用'username': 'tom'
執行相同的PUT請求時,MongoDB將看似任意刪除另一個用戶。
如何正確確保只有明確聲明的用戶名被刪除?