2016-10-24 143 views
0

因此,我正在用試圖實現MVC模式的貓鼬表達。我試圖基本打印出我的文件在小貓收集,但絕對不知道如何。我跟着無數的教程,並且一直在出錯。我所看到的大多數教程只是顯示他們將代碼放在一個不理想的單個文件中。我的路線確實有效,因爲我用我的觀點測試了它們(我沒有包含它們)。我在訪問/ 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); 

控制器/ 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); 

    }); 


} 

請幫忙,現在已經困在這個很簡單的問題了。

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

回答

0

首先我猜 「homemodel.js」 你需要一個module.exports:

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

嘗試這種在 「控制器/ 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'需要一個條件,例如你搜索kitty'pichou'的名字,你可以發送對象'{name:'pichou'}',或者通過發送空對象'{}'來列出所有結果'

+0

OP爲什麼要「試試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+1

對不起周杰倫,我編輯我的答案希望現在有幫助^^ – lefdilia

0

發送回所有關於「小貓」 S記錄,試試這個代碼:

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'的名字。如上所示,您應該導出模型以明確處理它。