мангуста / монгодб дата сохранить - PullRequest
0 голосов
/ 23 сентября 2011

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

{stack: [Getter / Setter], сообщение: «Ошибка приведения к дате для значения« [объект-объект] »», имя: «CastError», тип: «date», значение: {миллисекунда: 0, секунда: 0, минута: 0, час: 0, день: 21, неделя: 38, месяц: 8, год: 2011}}

Это ошибка схемы и кода запроса:

var Event = new Schema({
    id     : { type: String, index: true }
  , msg      : { type: String, lowercase: true, trim: true }
  , triggerOn      : { type: Date, required: true }
  , createdOn       : { type: Date, required: true }
  , triggered       : { type: Boolean, required: true }
});

exports.pullAndUpdateTest = function(){
    var Model = mongoose.model('Event');
    Model.find({ triggered: false }, function (err, docs) {
        if (err){
            console.log(err);
            return;
    }
    docs.forEach(function(doc, index, array){
        //date both appear to be null here
               console.log(doc.triggerOn);  //=> null / prints blank
        console.log(doc.createdOn); //=> null / prints blank

        doc.triggered = true;
        doc.save(function(err){ console.log(err)});
    });
});
}

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Это произойдет, если у вас есть datejs, требуемые где-либо в вашем приложении (или вы используете любой модуль, который, в свою очередь, требует datejs).

1 голос
/ 13 декабря 2011

Date.js - очень классная библиотека, однако реализация по умолчанию создаст беспорядок в приложениях Node.js при работе с MongoDB.Я бы порекомендовал вам использовать safe_datejs .Вы сможете использовать функцию Date.js, но вам придется преобразовать значения Date в объект Date.js перед вызовом любой из магических функций Date.js.

Пример:

var safe_datejs = require('safe_datejs');
var today = new Date();
var unsafeToday = today.AsDateJs(); // Converting to Date.js object
var unsafeTomorrow = unsafeToday.clone().add({days:1}); // Work with Date.js a little
var tomorrow = unsafeTomorrow.AsRegularDate(); //converted back safe to be used with MongoDB

Чтобы изменить специфичные для культуры атрибуты, используйте safe_datejs.DateType.CultureInfo

Дополнительная информация: https://github.com/firebaseco/safe_datejs

0 голосов
/ 23 сентября 2011

Вы определили свою модель с мангустом?

var Model = mongoose.model('Event', Event);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...