save()不使用mongoose中的静态

时间:2016-07-20 21:03:27

标签: node.js mongodb mongoose

以下是我尝试保存文档但不起作用的各种方法。我究竟做错了什么?这是使用静态的正确方法吗?这方面需要方法吗?如果是,在这种情况下如何实施?

方法1:

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

结果 - 保存不是函数

方法2:

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

结果 - userSchema不是函数

方法3:

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

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

结果 - 用户不是函数

修改

即使以下方法似乎也不起作用

方法4:

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

方法5:JohnnyHK suggested way

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

userSchema就像这样

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

如果使用this.create(数据,回调),一切正常;而不是保存但我想出于某些原因使用保存。

使用它进行保存之前的数据

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

1 个答案:

答案 0 :(得分:1)

您需要创建模型的实例,因为 save 方法仅适用于实例。

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

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

并且请通过添加一些大写来避免重复变量。它更具可读性和危害性

Mongoose文档: http://mongoosejs.com/docs/models.html