2016-03-03 3 views
0

Мне интересно, будет ли этот сценарий модели Mongoose работать, и в настоящее время я не могу его протестировать.Доступ к модели Mongoose с помощью метода из схемы модели

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

Вот мои тестовые коды, пожалуйста, убедитесь, что первый параметр 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) 
Смежные вопросы