【问题标题】:mongoose and node error : Cannot call method 'model' of undefined猫鼬和节点错误:无法调用未定义的方法“模型”
【发布时间】:2014-08-11 12:17:14
【问题描述】:

我尝试使用 node 遵循关于 mongoose/mongodb 的教程,但在尝试从集合中获取 express/node 到 res.send json 文档时遇到了问题。

当我尝试访问 localhost:3000/mongodb 时,以下代码会产生错误

数据库和集合存在。该集合有 3 个文档。

app.js

/**
 * Module dependencies.
 */

var express = require('express');
var http    = require('http');
var path    = require('path');

var mongoose = require('mongoose');
var app = module.exports = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.engine('html', require('hogan-express'));
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

mongoose.connect('mongodb://localhost/xkayak');
var schema         = new mongoose.Schema({ username: 'string', email: 'string', password: 'string'});
var usercollection = mongoose.model('usercollection', schema);

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

require('./routes/index.js');

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

index.js --路由文件

var app = require('../app.js');

app.get('/mongodb', function(req, res) {
    app.mongoose.model('usercollection').find(function(err, usercollection) {
        res.send(usercollection);
    });
});

产生的错误是:

500 TypeError: Cannot call method 'model' of undefined

我的代码有什么问题?我是否错误地设置了集合?如果我删除此代码,其他一切正常。

【问题讨论】:

  • 你能发布你的 require('mongoose') 部分吗?
  • 要搭载@staaar,您可能只需要mongoose.model('usercollection')。但在我们看到你如何包括猫鼬之前,我们无法确定。
  • @staaar 和 Tony 我更新了问题

标签: node.js express mongoose


【解决方案1】:

在您的路线中,您正在导入app。问题出在这里:

var app = module.exports = express();

这意味着当您导入app.js 时,您将获得express 的实例,而不是像您在执行app.mongoose.model... 时所想的那样。

考虑:

app.js:

var app = express();
exports.express = app;
...
var mongoose = mongo.connect(...);
exports.mongoose = mongoose;

index.js:

app.express.get( ...
    app.mongoose.model(...);
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2017-12-11
    相关资源
    最近更新 更多