Я делаю простой findOne() и сохраняю документ в нем, но по какой-то причине он не работает. Я вывел объект, а вывод в консоли правильный, но после сохранения() я взглянул на мой mongodb, и это не спасло. Я не уверен, есть ли какой-то вариант, который я должен установить. Вот мой код:mongoose findOne() вызов не сохраняется и нет ошибки в выходе
var1 = "data1";
var2 = "data1field1";
Model.findOne({'_id':some_id}).exec(function(err, doc) {
if (err) return console.error(err);
(doc.data[var1][var2][0] += 1;
console.log(doc.data.data1);
doc.save(function (err) {
if(err){console.log(err);}
console.log('success');
});
});
Вот моя схема:
var modelSchema = new mongoose.Schema({
'data':{
'data1':{
'data1field1':[{type: Number}],
'data1field2':[{type: Number}]
},
'data2':{
'data2field1':[{type: Number}],
'data2field2':[{type: Number}]
}
}
});
var Model = mongoose.model('model', modelSchema);
module.exports.Model = Model;
Say я создаю экземпляр этой схемы, где data.data1.data1field1 представляет собой массив из двух чисел [0,0], вывод для «console.log (doc.data.data1)»; будет:
{
data1field1:[1,0],
data1field2:[0,0] }
success
Но спасение не происходит. Я новичок в mongoose/mongodb, поэтому есть, вероятно, простая фундаментальная вещь, которую я не хватает.
ПРИМЕЧАНИЕ: Я не могу использовать Model.update ({}, {$ inc {}}), потому что я использую переменные, чтобы выбрать, какой объект данных нужно изменить, и из-за литералов в .update() это невозможно.
Спасибо.
Я чувствую, что узнал что-то важное. Благодаря! – PGT
@ peter-lyons: В моем сценарии я изменяю свойство прямого (1-го уровня). Например, doc.userStatus = "active", но по-прежнему возникает одна и та же проблема. :( –
Даже после вызова doc.markModified («userStatus») он не работает. –