Я пытаюсь добавить в существующий массив внутри моего объекта User внутри MLAB.
Я использую Mongoose 5.1.1 и MongoDB 3.4.9, и я чувствую, что я пробовал все варианты update (), findByIdAndUpdate (), findAndModify () и т. д.
Я не уверен, почему этот метод update () не работает.Когда я запускаю этот код, я получаю {"ok": 0, "n": 0, "nModified": 0} в моем сыром ответе, но никаких ошибок не выдается.Я прочитал документы и считаю, что все правильно, но явно нет.
Есть мысли?Заранее спасибо.
Пользовательский объект в MLAB выглядит следующим образом:
{
"_id": {
"$oid": "Blah12345"
},
"fbid": "123456789101112",
"email": "myemail@gmail.com",
"name": "My Name",
"__v": 0,
"guestlist": [],
"reviews": []
}
Моя модель
import mongoose from 'mongoose';
import express from 'express';
const router = express.Router();
module.exports = router;
const schemaOptions = {
collection: "users"
};
const Guestlist = new mongoose.Schema({
guestlist: [{
date: String,
name: String,
guys: Number,
girls: Number
}]
}, schemaOptions);
module.exports = mongoose.model('Guestlist', Guestlist);
Мой файл API
import express from 'express';
import Guestlist from './data/guestlistModel';
const router = express.Router();
router.post('/guestlist', (req, res) => {
const guestlist = new Guestlist();
let date = req.body.date;
let name = req.body.name;
let guys = req.body.guys;
let girls = req.body.girls;
const query = {fbid: req.body.fbid};
const update = { $push: {
guestlist: {
date: date,
name: name,
guys: guys,
girls: girls
}
}};
guestlist.update(query, update, (err, raw) => {
if (err) throw err;
if (raw) {
console.log(JSON.stringify(raw));
console.log("1 document updated");
res.sendStatus(200);
}
});
});