繁体   English   中英

类型错误:无法使用猫鼬读取未定义的属性“查找”

[英]TypeError: Cannot read property 'find' of undefined with mongoose

我看到了一些像我这样的问题,但找不到任何有效的解决方案,所以我想我会问。

我正在尝试从我的数据库中提取我的所有数据,以便我可以在我的应用程序中选择其中的一部分。 我的数据库工作正常,但是当我尝试提取图片时它失败并不断给我这个错误并且似乎也没有从数据库接收数据:

 TypeError: Cannot read property 'find' of undefined

我安装了 mongoose 并且一切都已连接,所以我无法弄清楚为什么它无法识别 find 属性。 如果有人有任何想法,我的代码如下。

 // Dependencies var express = require("express"); var bodyParser = require("body-parser"); var mongoose = require("mongoose"); var exphbs = require("express-handlebars"); var request = require("request"); // var weapons = require("./weapons.js"); // Set mongoose to leverage built in JavaScript ES6 Promises mongoose.Promise = Promise; // Initialize Express var app = express(); // Use morgan and body parser with our app app.use(bodyParser.urlencoded({ extended: false })); // Make public a static dir app.use(express.static(__dirname + "/public")); app.engine("handlebars", exphbs({ defaultLayout: "main" })); app.set("view engine", "handlebars"); // Database configuration with mongoose mongoose.connect("mongodb://localhost/weaponsdb"); var db = mongoose.connection; // Show any mongoose errors db.on("error", function(error) { console.log("Mongoose Error: ", error); }); // Once logged in to the db through mongoose, log a success message db.once("open", function() { console.log("Mongoose connection successful."); });

 //routes to home page app.get('/', function(req, res, next){ res.render("index",{ title: 'Express' }); }); app.get('/app', function(req, res, next){ res.render("app",{ layout: 'applayout' }); }); app.get("/all", function(req, res) { // Query: In our database, go to the weapon collection, then "find" everything db.weapon.find({}, function(error, found) { // Log any errors if the server encounters one if (error) { console.log(error); } // Otherwise, send the result of this query to the browser else { res.json(found); } }); });

 $.getJSON("/all", function(data) { console.log(data) // For each entry of that json... for (var i = 0; i < data.length; i++) { // Append each of the weapons' properties to the table $("#results").append("<img src = " + data[i].Picture + " />"); } });

如果您使用的是mongoose您应该为您的集合定义一个schema ,然后您可以参考该架构:

var weaponSchema = mongoose.Schema({
     .... your model definition here ....
});

var Weapon = mongoose.model('weapon', weaponSchema);

比你能做的:

Weapon.find({})........

对于那些感兴趣的人,我找到了问题所在。

问题是缺乏我解决的模式,而且 mongodb 中的集合名称需要是复数而不是单数(所以武器不是武器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM