我正在尝试使用mongoose使我的快速应用程序与MongoDb一起使用。
以下是代码(After edit ):
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: String,
password: String
});
var Users = mongoose.model('Users', UserSchema);
/* GET admin page. */
router.get('/', function(req, res, next) {
res.render('admin/admin', {
title: 'Admin'
});
});
router.post('/login', function(req, res, next) {
console.log(req.body.username);
Users.findOne({
username: req.body.username
}, function(err, user) {
console.log('Error: ' + err, user);
});
// console.log(req.body.username, req.body.password);
// passport.authenticate('local', {
// successRedirect: '/',
// failureRedirect: '/admin'
// });
});
module.exports = router;
我的问题是我在我的收藏中找不到用户。我已经尝试使用多种字符串格式(大小写或不大写)来指定一个集合名称,因为您可以在同一个子画面上看到并喜欢其他帖子的答案。
findOne()方法总是通过错误回调,即使文档已正确添加到集合中。
如果你有人有想法或什么的话!
非常感谢!
编辑:
在您的建议之后,我更新了代码以获得更符合逻辑的内容。
在我的MongoLab Users
集合中,我有一个这样的文档:
{
"_id": {
"$oid": "5641e9a1e4b0af6681f0bef1"
},
"username": "admin",
"password": "admin"
}
在POST
数据之后,“admin”与用户名完全相同,mongoose查询会返回此信息:
web.1 | admin // req.body.username
web.1 | Error: null null // findOne() error callback
mongoDB操作仅在./routes/admin.js
中进行,而moongose.connection
仅在./index.js
中进行。我对模块概念不太满意......
答案 0 :(得分:0)
为了能够运行查询,您必须先创建模型:
var schema = new mongoose.Schema({
username: String,
password: String});
var Users = mongoose.model('Users-CollectionName', schema);
然后像你一样查询你的数据库。
Users.findOne({
username: req.body.username
}, function(err, user) {
console.log('Error: ' + err, user);
});