2016-07-20 16 views
0

Unten sind verschiedene Methoden, die ich versuchte, Dokumente zu speichern, aber nicht funktioniert. Was mache ich falsch? Ist es die richtige Art, statische Daten zu verwenden? Wird hier Methode benötigt? Wenn ja, wie wird es in dieser Situation umgesetzt?save() funktioniert nicht mit Statik in Mungo

Methode 1:

userSchema.statics.saveUser = function(data, callback){ 
    data.save(callback); 
}; 

Ergebnis - ist speichern keine Funktion

Methode 2:

userSchema.statics.saveUser = function(data, callback){ 
    data = new userSchema(data); 
    data.save(callback); 
}; 

Ergebnis - userSchema ist keine Funktion

Methode 3:

userSchema.statics.saveUser = function(data, callback){ 
    var user = new user(data); 
    data.save(callback); 
}; 

var user = Mongoose.model('user', userSchema); 

Ergebnis - Benutzer ist keine Funktion

bearbeiten

Auch die folgenden Methoden scheint nicht

Methode 4 zu arbeiten:

userSchema.statics.saveUser = function(data, callback){ 
    var user = new this(data); 
    user.save(callback); 
}; 

Methode 5: JohnnyHK suggested way

userSchema.statics.saveUser = function(data, callback){ 
    var user = new this(); 
    user.data = data; 
    user.save(callback); 
}; 

userSchema ist wie folgt

var db = require('../database'); 
var Mongoose = db.Mongoose; 
require('mongoose-long')(Mongoose); 
var SchemaTypes = Mongoose.Schema.Types; 

var userSchema = new Mongoose.Schema({ 
    _id:{ type: String, required: true, unique:true }, 
    // many fields with type as string and number 
    . 
    . 
    . 
    Number:{ type: SchemaTypes.Long, min: 0, default: 0}, 
}); 

// query functions here 

var user = Mongoose.model('user', userSchema); 

// exporting model here 

Alles funktioniert gut, wenn die Verwendung this.create (Daten, Rückruf); anstelle von speichern, aber ich möchte aus bestimmten Gründen speichern verwenden.

Daten, bevor es für speichern

[ { _id: '2A864493-52614B19', 
    name: 'xyz', 
    date: 'some date', 
    ... 
    ... 
    ... 
    city: 'adf' 
} ] 

Antwort

0

Sie verwenden, müssen Sie eine Instanz des Modells erstellen, weil die speichern Methode zum Beispiel nur zur Verfügung steht.

var User = mongoose.model('user', UserSchema); 

UserSchema.statics.saveUser = function(data, callback){ 
    var user = new this(data); 
    user.save(callback); 
}; 

Und bitte vermeiden Sie die Doppelung von Variablen mit dem Hinzufügen von einigen Großbuchstaben. Es ist besser lesbar und weniger gefährlich.

Mongoose Dokumentation:http://mongoosejs.com/docs/models.html

+0

Das gibt mir einen Fehler "Pfad' _id' ist erforderlich". Wenn ich Benutzer vor dem Speichern protokolliere, ist das Ergebnis null. Bedeutung nach dem Erstellen einer Instanz Daten wird null. –

+0

Können Sie Ihr UserSchema bitte zum Beitrag hinzufügen? –

+0

Ja sicher hinzugefügt. Bitte prüfe. –

Verwandte Themen