【发布时间】:2019-05-16 05:26:46
【问题描述】:
我是 Mongoose 的新手。我为名为“questionSchema”的 Mongoose 模式编写了一个静态方法和一个实例方法,并将其导出如下:
var questionSchema = new Schema({
...
})
questionSchema.methods.createQuestion = function(){
return this.save(function(err){
if(err){
return err
};
return 'Saved the question';
});
};
questionSchema.statics.getAllQ = function(){
return this.find({}, function(err, res){
if(err){
return err
};
return res;
});
}
module.exports = mongoose.model('Question', questionSchema)
然后在我的 Node/Express 服务器的一个路由中,我将它作为模型导入,并尝试调用静态方法,该方法应该返回 Question 模型下的所有文档:
const Question = require('../models/question.js');
...
router.post('/qcrud/submit', (req, res) => {
let reqBody = req.body;
var newQuestion = new Question({reqBody});
newQuestion.createQuestion();
})
router.get('/qcrud/getAll',(req, res) => {
let qArr = Question.getAllQ()
res.send(qArr);
});
但是,它返回一个 Query 对象,而不是我预期的数组。我环顾四周,在 MDN 上看到了
'如果你不指定回调,那么 API 将返回一个变量 查询类型。'
我确实指定了一个回调,但仍然得到了 Query 对象。首先,我使用的是静态方法和实例方法吗?文件甚至保存了吗?以及如何访问保存的数组文档?
【问题讨论】:
标签: node.js express mongoose mongoose-schema