使用Model的Schema中的方法访问Mongoose Model

时间:2016-03-03 04:35:31

标签: oop mongoose models

我想知道这个Mongoose Model场景是否有用,目前无法测试它。

var xSchema = new mongoose.Schema({
    Data: String
});

xSchema.methods.getData = function(ID){
    SSS.findById(ID, function(err, found){
        if(err) throw err;
        return found;
    }
}

SSS = mongoose.model('x', xSchema);

SSS.getData()会正确返回Data吗?

1 个答案:

答案 0 :(得分:1)

以下是我的测试代码,请确保mongoose.model的第一个参数与SSS相同,就像我的代码如下所示。

var xSchema = new mongoose.Schema({
    Data: String
});
xSchema.methods.getData = function(ID, callback){
    SSS.findById(ID, function(err, found){
        if(err) throw err;
        else
            callback && callback(found);
    });
}
var SSS = mongoose.model('SSS', xSchema);


function findX() {
    var s1 = new SSS({data: 'dd'});
    // the `"56d7c1b29741d2982750c725"` is the `_id` of `{Data: 'test'}`
    s1.getData("56d7c1b29741d2982750c725", function(d) {
        console.log(d);
    })
}

function saveX() {
    var s = new SSS({Data: 'test'});
    s.save(function (err) {
        if (err)
            console.log(err);
        else
            console.log('save sss successfully');
    });
}

xSchema.methods定义instance method,也许Statics方法会更好

xSchema.statics.getData = function (ID, cb) {

然后您可以通过

访问此方法
SSS.getData(ID, cb)