Saya memiliki aplikasi yang berjalan di Node.js dan mongodb dengan luwak sebagai drivernya. Saya telah membuat fungsi login dan hanya untuk tujuan debugging, saya mencetak dokumen setelah menanyakan. Ini kode saya:
mongodb:
{
"_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"
}
cabang.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);
});
});
};
Saya membuat permintaan mengirimkan data:
{
username:'matthew',
hidden.password:'200169+'
}
dan itu mengembalikan hasilnya:
{
"_id": "532cec102e42bcfced71fe03",
"admins": []
}
namun, saya diharapkan melihat hasilnya seperti ini:
{
"admins": [
{
"username":"matthew,
"name":"lol"
}
],
"token":"f10e2821bbbea527ea02200352313bc059445190"
}
Saya curiga permintaannya salah, karena jika saya mengirimkan kombinasi nama pengguna dan kata sandi secara acak, hasilnya tetap sama. Tolong bantu, terima kasih!