Я немного запутался в методе pull из mongoose, вы можете просто потянуть объектID, или же тяга просто должна быть по величине из модели данных?MongoDB - Mongoose Array Pull from doc
В любом случае я не могу получить тяну, чтобы удалить элементы из массива.
Вот модели:
var fieldSchema = new Schema({
'name' : String,
'value' : String
});
var formSchema = new Schema({
'name' : String,
'fields' : [fieldSchema]
});
var userSchema = new Schema({
'email' : String,
'firstName' : String,
'lastName' : String,
'application' : [formSchema]
});
var fieldModel = mongoose.model('field',fieldSchema);
var formModel = mongoose.model('form',formSchema);
var userModel = mongoose.model('user',userSchema);
Code (есть только один документ в БД, который почему findOne не имеет paramters):
userModel.findOne({}, function (err, user) {
if (err) return handleError(err);
var edit = false;
for(i in user.application) {
if(user.application[i].name == submit.name) {
edit = true;
user.application.pull({'name':submit.name}); //is this valid?
user.application.push(submit);
}
}
console.log(edit);
if(!edit) {
user.application.push(submit);
}
user.save(function(err, doc, numAffected) {
if (err) console.log(err);
else {
console.log('number of rows: ' + numAffected);
doc.save();
}
});
});
Doc в БД:
"_id" : ObjectId("5490f0cdd059b4cdb6bdf7d2"),
"email":"[email protected]",
"firstName":"tester",
"lastName":"tester",
"application" : [
{
"name" : "Contact",
"fields" : [
{
"field_name" : "New field - 1",
"field_value" : "kkkkkkk"
}
]
}
],
Почему не рекомендуется использовать цикл в эта ситуация? – rajh2504
, потому что у вас есть массив user.application и используйте для цикла для итерации, но в то же время вы нажимаете объект в массиве (user.application), из-за этого он выполняет более одного: используйте этот код и регистрируйте, сколько раз для цикла выполняет: var j = 0; для (var i in user.application) { console.log (++ j) if (user.application [i] .name == submit.name) { edit = true; user.application.pull ({'name': submit.name}); user.application.push (submit); // ошибка !!! } } – kaxi1993
ах, спасибо, хороший улов! – rajh2504