连接到node.js中的mongodb时,无法读取未定义的属性“集合”?
问题描述:
我想从我的signin.ejs文件登录,点击在 我的登录页面的登录按钮后,它显示“无法读取属性集合未定义”什么是 问题。连接到node.js中的mongodb时,无法读取未定义的属性“集合”?
我这样定义我的路线app.js:
app.post('/login', routes.dologin);
我定义的index.js我dologin路线:
exports.dologin = function (req, res) {
res.locals.session = req.session;
var user = req.body.user;
db.authenticateUser(user.email, user.password, function (err, response) {
if (err) {
.......
.......
} else {
.......
........
}
});
};
在我db.js:
var mongo = require('mongoskin'),
crypto = require('crypto');
module.exports = function (config) {
var USERS_COLLECTION = 'users',
ORDERS_COLLECTION = 'orders',
salt = 'supersecretkey',
db;
authenticateUser: function (emailId, password, callback) {
db.collection(USERS_COLLECTION).count({email : emailId, password: encryptPassword(password)}, function (err, count) {
if (err) {
console.log("error authenticating user: " + err);
callback(new Error(err));
} else if (count === 0) {
callback(new Error("emailid/password did not match"));
} else {
callback(null);
}
});
},
}
获取“Collection undefined”的问题在哪里?我想在这里 一切都是正确的...这里有什么问题吗?告诉我..请谢谢。
答
您应该添加以下代码db = mongo.db('localhost:27017/yourdb');
var mongo = require('mongoskin'),
crypto = require('crypto');
module.exports = function (config) {
var USERS_COLLECTION = 'users',
ORDERS_COLLECTION = 'orders',
salt = 'supersecretkey',
db = mongo.db('localhost:27017/yourdb');
authenticateUser: function (emailId, password, callback) {
db.collection(USERS_COLLECTION).count({
email: emailId,
password: encryptPassword(password)
}, function (err, count) {
if (err) {
console.log("error authenticating user: " + err);
callback(new Error(err));
} else if (count === 0) {
callback(new Error("emailid/password did not match"));
} else {
callback(null);
}
});
},
}
'db'是不确定的,'VAR db'不是有效的数据库对象 –