Моя модель Mongoose:
const userSchema = Schema({
firstName: String,
lastName: String,
books: [{title: String, author: String, isbn: Number}]
});
Я хотел бы добавить a new title & author with a book object
для каждого запроса POST. Мой текущий подход дает мне ошибку positional operator did not find the match
:
var User = mongoose.model("User", userSchema);
router.post('/submit', (req, res) => {
let update={
'books.$.title' : req.body.title,
'books.$.author' : req.body.author
}
User.findOneAndUpdate({_id:req.body.user_id},{$push: update},{new: true}).exec(function(err, doc) {
if (err){
console.log(err);
return;
}
res.send(doc);
});
});
Я ожидаю следующий результат для отправки двух форм (POST) с другим автором и названием в моей БД:
{
_id: 'SomeId'
firstName: 'John',
lastName: 'Cena',
books: [{title: 'a', author:'b' }, {{title: 'c', author:'d' }}]
}
Iв обоих сообщениях насчет ISBN не имеет значения, поскольку в нашей схеме это поле не является обязательным. Поскольку мой поддокумент books
в начале пуст, поэтому я не могу правильно установить positional operator ($)
в своем коде. Пожалуйста, помогите мне правильно написать findOneAndUpdate
запрос!