2017-01-27 7 views
0

Я продолжаю получать эту ошибку, говоря, что TypeError: getVowels.find не является функцией. Это проект экспресс-проекта Swagger, в котором вы узнаете, как создать функцию мангуста для поиска. Что я делаю не так? Спасибо заранее.Экспресс TypeError объект не является функцией

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

ответ

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); 
}); 
+0

Спасибо, что я делал неправильно – Bamanyi

1

Если VowelsSchema является Мангуст модели, Model.find() method определяется на самом конструктору:

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

Вместо того, как метод экземпляра, getVowels.


Примечание: Мангуст-х API documentation использует 2 "оператор", чтобы различать типы методов:

  • периоды (.) для методов конструктора - например Model.count()

    ModelType.count(function ...); 
    
  • Количество знаков (#) для методов экземпляра - например Model#save()

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

спасибо Джонатан! – Bamanyi