在node / mongodb / express中创buildlogin系统。 无法连接到数据库

我正在尝试创build一个login系统,pipe理员可以login并查看公众无法获取的数据。 现在我只是想在我的数据库中find我的pipe理员实例。 我有两个节点文件: app.jsaccount_manager.js

app.js

 //creates node app var express = require('express'); var app = express(); var mongoose = require('mongoose'); var AM = require('./account_manager'); //stuff... /*************************************** LOGIN ***************************************/ app.post('/login', function(req, res){ AM.manualLogin(req.param('username'), req.param('password'), function(e, o){ if (!o){ res.send(e, 400); } else{ req.session.user = o; res.send(o, 200); } }); }); 

app.js需要account_manger.js并存储在AM中

account_manager.js

 var express = require('express'); var app = express(); var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost'); var admin_db = mongoose.connection; admin_db.on('error', console.error.bind(console, 'connection error: ')); //connection open? admin_db.once('open', function callback(){ console.log("User Database connection open!\n"); }); var User_Schema = new mongoose.Schema({username: String, password: String}); var Admin = mongoose.model('Admin', User_Schema); exports.manualLogin = function(user, pass, callback) { admin_db.find({username: user},function(err,docs){ //error is here if(docs){ var x = 0; var flag = false; while(docs[x]){ //goes through all the admins if (docs[x].param("username") == user){ //if it's a match callback(null, docs); flag = true; break; } x+=1; } if (flag == false){ callback('invalid-password/username'); } } }); } 

我得到一个types错误,说:

 Object #<NativeConnection> has no method 'find' 

我的问题是什么?

我自己对node.js还是比较新的,但我会尽力回答。

看起来你已经通过mongoose正确地build立了与MongoDB的连接,但是你还没有创build一个模式。 虽然mongodb没有图式,但是mongoose会这样做。

你需要做的是创build一个与用户集合中的用户文档的构造匹配的模式(UserSchema),然后创build一个现在是你的模型的模式(User)的实例,然后在该模型上调用.find 。

“mongoose快速入门”指南通过以下过程: http : //mongoosejs.com/docs/index.html

更新后编辑:

您目前正在呼叫admin_db.find。 这不存在。 这是你得到的错误。

您需要将其更改为Admin.find。 你也需要明白有什么不同。

再次编辑:

您没有正确使用admin_db.oncecallback。

我build议你回去重读一下我链接的Mongoose Quick Start指南。 这是相当短的,经历了所有这一切。

我看到你在这里滚动你自己的系统,但我想我会分享一个石膏板的链接,以防你可以从中获得一些灵感或知识。

石膏板 – Node.js的网站和用户系统: http : //jedireza.github.io/drywall/

我希望这是有帮助的。 如果遇到任何路障,请随时在GitHub中打开问题。