繁体   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