관리자가 로그인하여 일반 사용자가 사용할 수없는 데이터를 볼 수있는 로그인 시스템을 만들려고합니다. 지금은 데이터베이스에서 내 관리자 인스턴스를 찾으려고합니다. app.js
및 account_manager.js
노드/mongodb/express에 로그인 시스템 생성. 데이터베이스에 연결할 수 없습니다.
//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);
}
});
});
account_manger.js
app.js
가 app.js
에 필요하며
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');
}
}
});
}
내가 말하는
TypeError
를 얻을 나는 두 개의 노드 파일이 :
Object #<NativeConnection> has no method 'find'
내 문제는 무엇입니까?
답장을 보내 주셔서 감사합니다. 내 'account_manager.js'에 스키마가 포함되어 있습니다. 그냥 포함시키지 않기로 결정했습니다. 포함하도록 수정했습니다. – tausch86
내 대답이 변경 사항을 반영하도록 변경되었습니다. – phairoh
어리석은 실수 였어. 추적 해 주셔서 감사합니다! – tausch86