【问题标题】:Mongoose-supported entity cannot be saved due to (mysterious) "decodeInt"/VirtualType/Getter error由于(神秘的)“decodeInt”/VirtualType/Getter 错误,Mongoose 支持的实体无法保存
【发布时间】:2012-04-14 20:26:03
【问题描述】:

我需要有关保存 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”的属性:但是无法保存实体。

您能帮我让对象持久性为我工作吗?

【问题讨论】:

    标签: node.js mongoose odm


    【解决方案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;
    

    你应该很高兴。我也会为此向所有者提交一个补丁。

    【讨论】:

    • 谢谢,这个修复对我有用。您是否将补丁提交给所有者?
    • 我和其他几个人一起修复了问题,可能是时候分叉了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多