首页 > 解决方案 > 我的 .find 函数没有调用我的数据库

问题描述

我的 .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 不是函数的错误。

标签: javascriptnode.jsfunctionexpressmongoose-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 });

推荐阅读