Mongoose не сохраняет данные об обновлении () в Mlab - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь добавить в существующий массив внутри моего объекта 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);
        }
    });
});

1 Ответ

0 голосов
/ 20 мая 2018

Нет необходимости создавать экземпляр здесь ... вы можете использовать Guestlist напрямую

router.post('/guestlist', (req, res) => {

    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);
        }
    });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...