我一直收到这个错误,说TypeError:getVowels.find不是函数。 这是一个昂首阔步的Express项目,学习如何创建一个mongoose函数来查找。我究竟做错了什么? 提前谢谢。
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var VowelsSchema = require('../models/vowels');
// connect to our database
mongoose.createConnection('mongodb://127.0.0.1:27017');
module.exports = router;
router.get('/', function(req, res) {
var getVowels = new VowelsSchema();
getVowels.find(function(err, vowels) {
if (err) {
res.send(err);
}
res.json(vowels);
});
});
答案 0 :(得分:1)
如果VowelsSchema
是一个Mongoose模型,Model.find()
method是在构造函数本身上定义的:
VowelsSchema.find(function (err, vowels) { ... });
而不是作为实例的方法,getVowels
。
注意:Mongoose的API documentation使用2个“运算符”来区分方法的类型:
构造函数方法的句点(.
) - 例如Model.count()
ModelType.count(function ...);
例如方法的数字符号(#
) - 例如Model#save()
var instance = new ModelType({ ... });
instance.save(function ...);
答案 1 :(得分:1)
您错误地使用find
方法。它不适用于instance of your model
,但适用于model
本身。
因此,请尝试此
而不是getVowel.find(function(err,vowels){...})
VowelsSchema.find({},function(err,vowels){//its always a good practice to ue {} in find
if (err) {
res.send(err);
}
res.json(vowels);
});