ฉันมีแอปพลิเคชันที่ทำงานใน Node.js และ mongodb โดยมีพังพอนเป็นไดรเวอร์ ฉันได้สร้างฟังก์ชันการเข้าสู่ระบบและเพื่อจุดประสงค์ในการแก้ไขจุดบกพร่อง ฉันจะพิมพ์เอกสารหลังจากการสอบถาม นี่คือรหัสของฉัน:
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"
}
สาขา.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"
}
ฉันสงสัยว่าแบบสอบถามนั้นผิด เนื่องจากหากฉันส่งชื่อผู้ใช้และรหัสผ่านแบบสุ่ม มันก็ยังให้ผลลัพธ์เหมือนเดิม โปรดช่วยด้วยขอบคุณ!