我的.find函数未调用我的数据库

时间:2019-07-05 06:18:51

标签: javascript node.js function express mongoose-schema

我的.find函数不起作用。它没有调用我的数据库并返回以下错误:

TypeError: beerSchema.findOne is not a function

我的其他页面显示正常,这只是页面,我正在尝试加载数据库。

app.get("/beers", function(req, res){
  //Get all beers
  beerSchema.find({}, function(err, beers){
    if (err) {
      console.log(err);
    } else {
      res.render("beers", {beers: beers});
    }
  });
});

BeerSchema:

var beerSchema = new mongoose.Schema({ 
    name:String, 
    abv: Number, 
    type:String, 
    Brewery:String, 
    Image:String 
}); 
var beer = mongoose.model("Beer", beerSchema );

我得到.find不是函数的错误。

1 个答案:

答案 0 :(得分:1)

您需要模型而不是 schema 。无论您在哪里创建架构,都请更改:

module.exports = beerSchema;

对此:

module.exports = mongoose.model("Beer", beerSchema);

然后将其导入您的应用文件中:

const { Beer } = require("./beer.js");

并使用Beer

Beer.find({}, function(err, beers) {...});

旁注:ES6速记属性表示法代替此:

res.render("beers", { beers: beers });

您可以这样做:

res.render("beers", { beers });