2012-02-03 63 views
1

我有使用Node.js的Express和猫鼬的一个小问题。我用pastebin粘贴了代码,以获得更好的可视性。Node.js快速猫鼬查询发现

这里是app.js:http://pastebin.com/FRAFzvjR 这里是路线/ index.js:http://pastebin.com/gDgBXSy6

由于db.js并不大,我在这里发布:

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

module.exports = function() { 
    mongoose.connect('mongodb://localhost/test', 
    function(err) { 
     if (err) { throw err; } 
    } 
); 
}; 

var User = new Schema({ 
    username: {type: String, index: { unique: true }}, 
    mdp: String  
}); 

module.exports = mongoose.model('User', User); 

由于你可以看到,我用console.log来调试我的应用程序,我发现,在routes/index.js中,只有a出现了。这很奇怪,就好像脚本停止(或继续没有任何响应)时

userModel.findOne({username: req.body.username}, function(err, data) 

被试过。

有什么想法?

回答

2

你永远不会连接到你的数据库。你的连接方法在db.export中,但从来没有被你的应用程序称为函数。

此外,您正在覆盖您的module.exports - 如果您想要导出多个函数/类,您必须将它们添加为module.export对象的不同属性。即:

module.export.truthy = function() { return true; } 
module.export.falsy = function() { return false; } 

当然后是require模块,则必须调用函数(trueFalse.truthy();),以获取该值。由于你永远不会执行连接到你的数据库的函数,你不会收到任何数据。

+0

相同谢谢,你说的很有帮助。看看我对其他消息的评论,如果你想知道细节。 :d – 2012-02-04 09:14:43

0

几件事情真的很快。

  1. 请确保您使用的是最新的猫鼬(2.5.3)。更新你的package.json并运行npm更新。
  2. 尝试在if (err)之前做一个console.log(augments)。有可能发生错误。
  3. 你确定你真的连接到数据库吗?尝试明确连接文件顶部(仅用于测试)mongoose.connect('mongodb://localhost/my_database');

如果我有其他想法,我会更新。

+0

谢谢你,帮了我很多。我想我没有真正连接。我以为module.exports自动执行该功能。但是我错了。 module.exports是否等于导出? – 2012-02-04 09:14:15

+0

yeah module.exports与出口 – 2012-02-04 21:53:54