Запрашивая mongodb с мангустом - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь получить документ, обновить его и сохранить обратно в БД, но, похоже, он не работает, т.е. не сохраняется в БД, даже если результат обратного вызова указывает, что обновление прошло успешно.возвращая недавно обновленный документ, но при проверке БД старая версия все еще там.вот запрос;

updateBed: (req, res) => {
    Client.findById(
        req.body.cid, (e, client) => {
            if (e) {
                console.log(e)
            } else {
                console.log(client.departments[2].beds[req.body.bedNo])
                client.departments.forEach((d, i) => {
                    if (d.name !== 'GOPD') {
                        return
                    } else {
                        d.beds[req.body.bedNo] = true
                    }
                })
                client.save((e, cl) => {
                    if (e) {
                        console.log(e)
                    } else {
                        console.log(cl.departments[2].beds[req.body.bedNo])
                        res.send(cl.departments)
                    }
                })
            }
        })
}

первый журнал перед обновлением, который

console.log(client.departments[2].beds[req.body.bedNo])

отличается от последнего журнала после обновления, который

console.log(cl.departments[2].beds[req.body.bedNo])

, что означает, чтообновление было сохранено, но, проверяя базу данных, я все еще смотрю старую версию документа.что мне здесь не хватает, пожалуйста

1 Ответ

0 голосов
/ 14 декабря 2018
client.save((e,cl)=> ....)

метод сохранения имеет только e (error) в обратном вызове.

Также ваша структура базы данных плохо написана.Большинство ваших обновлений должно выполняться mongodb, но не на сервере вашего узла.

Создайте кровати как отдельную коллекцию и укажите ее идентификатор в client.department.

Внесите следующие изменения

client.save( e => {if(e) console.log(e)} )

Также с findById все в порядке, но лучше использовать findOne ({_ id: req.body.cid}).

Чтобы проверить, обновилось ли оно только console.log (клиент) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...