Сейчас имеющаяся конструкция почему то добавляет документ в базу по результату проверки в любом случае, срабатывает запись в базу даже если 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, документ в БД все равно добавляется