Express TypeError 对象不是一个函数

Express TypeError object is not a function

我不断收到此错误,提示类型错误:getVowels.find 不是函数。 这是一个 swagger 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);
  });
});

如果 VowelsSchema 是 Mongoose 模型,Model.find() method 是在构造函数本身上定义的:

VowelsSchema.find(function (err, vowels) { ... });

而不是作为实例的方法,getVowels


注:Mongoose的API documentation使用2个"operators"区分方法的类型:

  • 构造方法的句点 (.) – 例如Model.count()

    ModelType.count(function ...);
    
  • 实例方法的数字符号 (#) – 例如Model#save()

    var instance = new ModelType({ ... });
    instance.save(function ...);
    

您错误地使用了 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);
});