簡體   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