gpt4 book ai didi

javascript - MongoDB 第一次不会返回正确的数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:44 25 4
gpt4 key购买 nike

这是我的代码:

// Modules
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/affinity';
window.$ = window.jQuery = require('jquery');
var user_data;

$(document).ready(function () {

// Look through db for user
// Flters through the db to find the user and their password to authenticate them in.
userInfo = function (db, callback) {
var username = $('#username').val();
var password = $('#password').val();
var users = db.collection('users');

// Searches through each user in the db to find one which meets conitions.
var cursor = users.find({
"username": username
}, {"limit": 1} ).each(function (err, doc) {
if (doc != null) {
if (doc.password === password) {
user_data = doc;
//window.location.replace(__dirname + '/assets/views/main.html');
} else {
$("#error-hint").css(
'visibility', 'visible'
);
}
} else {
// Skip user if it isn't matching
}
});
console.log(user_data);
}

// Connects to database.
// Inserts all user data to the database.
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Couldn\'t connect to the mongoDB server. \nERROR: ' + err);
} else {
var collection = db.collection('users');

// When login button run authUser function
$('#auth-btn').click(function () {
userInfo(db, function () {
db.close();
});
});
}
});


});

问题是,当我单击按钮以使用正确的信息对用户进行身份验证时,它会返回“未定义”值,但如果我第二次按下该按钮,它会从数据库返回正确的数据,但不会更改任何内容。我希望它第一次显示以正确验证用户身份。我做错了什么?请帮忙。

最佳答案

您的意思是 console.log(user_data); 返回 未定义 数据?

那是因为你没有在回调中调用它,所以第一次调用console.log(user_data);时数据库查询没有找到用户。当您第二次调用它时,第一个数据库查询完成,因此 user_data 已经设置,因此它将打印给您。第二次按下登录按钮时尝试查找其他用户。它将打印第一个用户的数据。

请注意,您的调用是异步的!因此,为了在查询完成时查看结果,只需将 console.log(user_data); 放入传递给 each 的回调函数中即可。

此外,如果您想将结果集限制为仅一个元素,请使用 db.collection.fidnOne({...}) 而不是 db.collection.find({...},{limit...}).each(...)

关于javascript - MongoDB 第一次不会返回正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com