@z0ddak
Мордор напоминает о себе

Как ограничить добавление документа в MongoDB по итогу проверки?

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

>> Обработчик
chatCreate = (req, res) => {

    const chat = new Chat({
        nickname: req.body.nickname,
        message: req.body.message
    });

    chat.save()
        .then(chat => {

            Room.find({
                'room_name': {$in: req.body.room}
            }, (err, rooms) => {

                if (err) {
                    return res.send(err);
                }

                 // тут проверяем наличие записи в БД и по результату выполняем действие
                if (rooms.length !== 0) {

                  chat.room = rooms;
                  chat.save(function (err) {

                      if (err) {
                          return res.send(err);
                      }

                      let answer   = {};
                      answer.state = 'success';
                      answer.text  = 'Message post successfully!';
                      let newarray = answer.concat(chat);
                      res.send(newarray);
                  });
                } else {
                   return res.send(err);
                }
            });
        })
        .catch(err => {
            res.status(500).send(err);
        });
};


>> Модель базы хранения комнат
const mongoose = require('mongoose');
const RoomSchema = mongoose.Schema({

    room_name: String,
    created_date: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Room', RoomSchema);


>> Модель базы хранения сообщений
const mongoose = require('mongoose'), Schema = mongoose.Schema;
const ChatSchema = mongoose.Schema({

    room: [{ type: Schema.Types.ObjectId, ref: 'Room' }],
    nickname: String,
    message: String,
    created_date: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Chat', ChatSchema);


>> Даже если условие if (rooms.length !== 0) > false, документ в БД все равно добавляется
5e4371aea43ef136846405.png
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы