0
업데이트되지 않습니다) (저장 : nodejs에 의해 호출몽구스 모델 'I는 다음과 같이 정의 된 몽구스 모델의 배열 (<code>bookedby</code>)가 빈 배열
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var BarSchema = new Schema({
date: {
type: Date,
required: true
},
barid: {
type: String,
required: true
},
bookedby: {
type: [String],
required: true
},
});
module.exports = mongoose.model('Bar', BarSchema);
나는 다음과 같은 기능을 업데이트를 라우터를 표현 :
const Bars = require("../../models/bars");
const { getToday } = require('../../utils');
module.exports = function(req, res) {
const { barid } = req.body;
const { username } = req.user;
const date = getToday();
if(!barid) return res.json({ success: false, error: 'Please specify parameter \'barid\'.'})
Bars.findOne({ barid, date }, function (err, bar) {
if (err) return next(err);
if (!bar || bar.bookedby.indexOf(username) === -1) return res.json({ error: `Bar is not booked yet.` });
// Someone booked the bar
const index = bar.bookedby.indexOf(username);
bar.bookedby.splice(index, 1);
bar.save(err => {
if (err) res.json({ error: `Error saving booking.` });
else res.json({ success: true });
});
});
};
모든 내가 bookedby
배열에서 마지막 항목을 제거하는 경우를 제외하고 잘 작동합니다. 그런 다음 save() 함수는 데이터베이스를 업데이트하지 않습니다. 마지막 항목은 그대로 남아 있습니다. 나는 mongodb와 빈 배열을 최적화하는 것과 관련이 있다고 생각하지만 어떻게 해결할 수 있습니까?
나는 그것을 시도했지만 저를 위해 작동하지 않았습니다. Bars.findOneAndUpdate ({barid, date}, {$ pull : {bookedby : username}}). 그리고 $ pull 대신 $ push를 추가합니다. 매력처럼 작동하십시오. 나는 MongoDB를 좋아하기 시작했다. – Michael