У меня есть приложение, работающее в Node.js и mongodb с mongoose в качестве драйвера. Я создал функцию входа в систему и только для целей отладки распечатываю документ после запроса. Вот мой код:
монгодб:
{
"_id" : ObjectId("532cec102e42bcfced71fe03"),
"admins" : [
{
"username" : "matthew",
"name" : "lol",
"hidden" : {
"password" : "f8d822f6fab9dfc3c7b3a5035cdc422aee3bb838",
"access" : true
}
},
{
"username" : "matthew1",
"name" : "2000",
"hidden" : {
"password" : "40bd001563085fc35165329ea1ff5c5ecbdbbeef",
"access" : false
}
}
],
"location" : "SZ",
"hidden" : {
"global_access" : true
},
"token" : "f10e2821bbbea527ea02200352313bc059445190"
},
{
"_id" : ObjectId("53307831a6b6ecd28c5cacd7"),
"admins" : [
{
"username" : "matthew123123",
"name" : "lol",
"hidden" : {
"password" : "f8d822f6fab9dfc3c7b3a5035cdc422aee3bb838",
"access" : true
}
},
{
"username" : "matthew1222222",
"name" : "2000",
"hidden" : {
"password" : "40bd001563085fc35165329ea1ff5c5ecbdbbeef",
"access" : false
}
}
],
"location" : "SH",
"hidden" : {
"global_access" : true
},
"token" : "f10e2821bbbea527ea02200352313bc159445190"
}
ветки.js
var mongoose = require('mongoose');
var db = mongoose.connection;
var adminSchema = new mongoose.Schema({
username: String,
name: String,
hidden: {
password: String,
access: Boolean
}
});
var branchSchema = new mongoose.Schema({
admins: [adminSchema],
location: String,
hidden: {
global_access: Boolean
},
token: String
});
var branch = mongoose.model('branch', branchSchema);
var admin = mongoose.model('admin', adminSchema);
exports.login = function(req,res){
var user = new admin(req.body, null, true)
user.hidden.password = sha1(user.hidden.password);
console.log(user);
mongoose.connect('mongodb://localhost:27017/branches');
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback()
{
console.log('connected to database');
branch.findOne({
},
{
"admins":
{
$elemMatch :
{
username: user.username,
'hidden.password': user.hidden.password,
}
}
})
.exec(
function (err,doc){
db.close();
res.send(doc);
});
});
};
Я сделал запрос на отправку данных:
{
username:'matthew',
hidden.password:'200169+'
}
и он вернул результат:
{
"_id": "532cec102e42bcfced71fe03",
"admins": []
}
однако ожидалось, что я увижу примерно такой результат:
{
"admins": [
{
"username":"matthew,
"name":"lol"
}
],
"token":"f10e2821bbbea527ea02200352313bc059445190"
}
Я подозреваю, что запрос был неправильным, поскольку, если я отправлю любые случайные комбинации имени пользователя и пароля, он все равно даст тот же результат. Пожалуйста, помогите, спасибо!