簡體   English   中英

無法查詢貓鼬的模型

[英]unable to query a model on mongoose

因此,我在嘗試實現MVC模式的貓鼬Express搞砸了。 我正在嘗試基本上將我的文檔打印在小貓收藏中,但是絕對不知道該怎么做。 我遵循了無數的教程,並且某些地方不斷出錯。 我看過的大多數教程只是向他們展示了將代碼放在一個單獨的文件中,這並不理想。 我的路線可以正常運行,因為我已經用視圖對它們進行了測試(未包括在內)。 當我訪問/ indexoflistcontrollersget時遇到的錯誤是kitty上的referenceError(listControllers.js中的第10行)。 顯然未定義kitty,但我確定應該是因為該文件需要homemodel.js,因此它應該已經運行了該代碼?

這些是我的文件:

app.js

var express = require('express');
var http = require('http');
var path = require('path');
var handlebars  = require('express-handlebars'), hbs;
var app = express();
var db = require('./db')

require('./router')(app);

app.set('port', 1337);
app.set('views', path.join(__dirname, 'views'));

/* express-handlebars - https://github.com/ericf/express-handlebars
A Handlebars view engine for Express. */
hbs = handlebars.create({
   defaultLayout: 'main'
});

app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

app.use(express.static(path.join(__dirname, 'static')));

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

// Connect to Mongo on start
db.connectDB();

db.js

var mongoose = require('mongoose');
exports.connectDB = function() {
mongoose.connect('mongodb://localhost:27017/test');
console.log("CONNECTED TO MONDO")
}

型號/homemodel.js

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

var kittySchema = new Schema({
    name: String
});

mongoose.model('kitty', kittySchema);

controller / listControllers.js

var express = require('express');
var router = express.Router();
var modelList = require('../model/homemodel.js');
var mongoose = require('mongoose');
exports.IndexOfListControllerGET = function(request, response){
//This is another controllers
//GET METHOD

  mongoose.model('kitty').find(function(err,kitty){
response.send(kitty);

  });


}

請幫助,長期困擾這個非常簡單的問題。

編輯=所以我解決了錯誤。 傳遞了錯誤的參數。 但只有[]正在打印。 當我使用mongo終端訪問小貓收藏時,我可以看到已經放入的條目。如何在頁面上顯示這些條目?

首先,我猜在“ homemodel.js”中,您需要一個module.exports:

    module.exports = mongoose.model('kitty', kittySchema);

在“ controller / listControllers.js”中嘗試一下:

var express = require('express');
var router    = express.Router();
var modelList = require('../model/homemodel.js');    

var IndexOfListControllerGET = function (request, response) {

var query = { name: 'pichou' };

modelList.find(query, function (err, kitty) {
    if (err) throw err;

    return response.send(kitty);
});
}

module.exports = IndexOfListControllerGET;

編輯: 'Model.find'需要一個條件,例如,您搜索小貓'pichou'的名稱,可以發送對象'{name:'pichou'}',或通過發送空對象'{}列出所有結果'

要發回有關“小貓”的所有記錄,請嘗試以下代碼:

modelList.find({}, function (err, kittyRecords){
  if (err) throw new Error("Error in finding kittys : " + err);
  console.log("Kittys: ", kittyRecords);
  return response.send(kittyRecords);
});

傳遞給貓鼬模型的空對象將匹配它遇到的所有記錄。 console.log將讓您查看記錄是否與網頁內容匹配。 看起來來自lefdilia的代碼有答案,但是只會返回“ pichou”的名稱。 如上所述,您應該導出模型以對其具有顯式句柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM