Express TypeError对象不是函数

时间:2017-01-27 04:32:25

标签: node.js express swagger-2.0

我一直收到这个错误,说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);
  });
});

2 个答案:

答案 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);
});