Объект, поддерживаемый Mongoose, не может быть сохранен из-за (загадочного) "decodeInt"/VirtualType/ ошибки Getter
Мне нужна помощь при сохранении экземпляра моделей, поддерживаемых Mongoose. При сохранении объекта выдается следующая ошибка:
node.js:134
00:27:16 web.1 | throw e; // process.nextTick error, or 'error' event on first tick
00:27:16 web.1 | ^
00:27:16 web.1 | TypeError: Cannot call method 'decodeInt' of undefined
00:27:16 web.1 | at model.<anonymous> (.../node_modules/mongoose-types/lib/plugins/useTimestamps.js:13:37)
00:27:16 web.1 | at VirtualType.applyGetters (.../node_modules/mongoose/lib/virtualtype.js:53:25)
00:27:16 web.1 | at model.get (...
Определение модели
var mongooseTypes = require("mongoose-types"), useTimestamps = mongooseTypes.useTimestamps;
mongooseTypes.loadTypes(mongoose);
var Url = mongoose.SchemaTypes.Url;
var Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
var TextSnippetSchema = new mongoose.Schema({
text_id : ObjectId
, text : String
, context : String
, url : Url
, position : String
});
TextSnippetSchema.plugin(useTimestamps);
var TextSnippet = mongoose.model('TextSnippet',TextSnippetSchema);
Код для создания и сохранения нового объекта выглядит следующим образом:
var instance = new TextSnippet();
instance.text= req.query["text"];
instance.context= req.query["ctx"];
instance.url = req.query["url"];
instance.position= "";
console.log(JSON.stringify(instance));
instance.save(function (err) {
console.log(err);
});
Насколько я понимаю, у меня нет свойства, где понадобился бы "decodeInt": однако объект не может быть сохранен.
Не могли бы вы помочь мне сделать так, чтобы постоянство объектов работало для меня?
1 ответ
Проблема в том, что mongodb больше не экспортирует BinaryParser. Вам нужно изменить импорт в useTimestamps на что-то вроде этого.
файл./node_modules/mongoose-types/lib/plugins/useTimestamps.js
var mongoose = require('mongoose')
, ObjectID = mongoose.ObjectID
, BinaryParser = require('mongoose/node_modules/mongodb/node_modules/bson').BinaryParser;
и тебе должно быть хорошо идти. Я также предоставлю владельцу патч для этого.