2012-03-31 5 views
0

ich auf Speichern Instanz von Mungo-unterstützten Modelle helfen müssen: die Entität Speichern führt den folgenden Fehler:Mongoose gestützte Einheit kann wegen (mysteriösen) gespeichert werden „decodeInt“/VirtualType/Getter Fehler

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 (... 

die Bestimmung des Modells ist

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); 

der Code erstellen & eine neue Entität wie folgt aussieht sparen:

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); 
    }); 

Zu meinem Verständnis habe ich keine Eigenschaft, wo ein "decodeInt" benötigt würde: aber die Entität kann nicht gespeichert werden.

Könnten Sie mir bitte helfen, Objektpersistenz für mich arbeiten zu lassen?

Antwort

1

Das Problem ist, dass mongodb BinaryParser nicht mehr exportiert. Sie müssen den Import in useTimestamps zu etwas wie diesem ändern.

Datei ./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; 

und Sie sollten gut zu gehen. Ich werde dem Besitzer auch einen Patch schicken.

+0

Danke, dieser Fix funktioniert für mich. Haben Sie Ihren Patch an den Eigentümer gesendet? –

+0

Ich habe zusammen mit einigen anderen Leuten mit Korrekturen, wahrscheinlich Zeit, um es zu verzweigen. – speajus