javascript - 我的 .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 不是函数的错误。
解决方案
您需要模型而不是模式。无论您在哪里制作架构,都可以更改:
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 });
推荐阅读
- javascript - array.map() 的意外结果
- flutter - Dart - 解析嵌套的 Json 数组
- node.js - 保存对话记录 - bot framework v4.4 node.js
- google-cloud-firestore - Datastore 模式下的新 Google Cloud Firestore 查询说明
- mongodb - 为什么 `mongoimport` 不能连接到我的免费层 MongoDB Atlas 集群?
- mongodb - 从匹配条件的数组中的对象中提取值
- angular - 忽略构建角度中的模板错误
- java - runOnUiThread 不适用于片段 - Android Studio
- python - Python 对象作为课堂讲师的可选参数
- html - 无法将输入表单数据作为 Golang 中的变量