Node.js NodeJS Express:如何获取对象项
我试图创建一个简单的登录表单,但无法验证来自MongoDB的密码 首先,我为表单验证创建.post路由,然后获取我想要与表单进行比较的MongoDB数据 这是我的密码:Node.js NodeJS Express:如何获取对象项,node.js,mongodb,express,validation,Node.js,Mongodb,Express,Validation,我试图创建一个简单的登录表单,但无法验证来自MongoDB的密码 首先,我为表单验证创建.post路由,然后获取我想要与表单进行比较的MongoDB数据 这是我的密码: app.post('/users', (req, res) => { const reqUser = req.body.params.name const reqPW = req.body.params.password // connect to mongoDB const collection = c
app.post('/users', (req, res) => {
const reqUser = req.body.params.name
const reqPW = req.body.params.password
// connect to mongoDB
const collection = client.db().collection("users")
collection.find({name: reqUser}).toArray(function (err, results) {
if (err) {
console.log(err)
res.send([])
return
}
else {
console.log('RESULT', results) // returns the object
console.log('RES PW', results.password) // returns undefined
// this does not work
Object.keys(results).forEach(function(key) {
console.log('key is: ', key); // returns 0
});
// validate user+pw
if (!reqUser || !reqPW/*|| reqPW !== password*/) {
return res.status(401).end()
}
// send result to frontend
res.send(results)
res.end
}
})
})
因此,我在results
中返回了我的对象,但我无法从该对象获取数据。
我还尝试使用array.from()
将其转换为一个数组,但也没有成功
请注意,我还没有实现密码的哈希和盐析,因为我认为我首先需要一个有效的验证。我需要先实现这些吗?我刚刚检查了:
方法返回一个数组,该数组包含游标中的所有文档。该方法完全迭代游标,将所有文档加载到RAM中并耗尽游标
因此toArray()
将返回一个数组,而不是对象,因此您的结果将是一个数组,其中包含从数据库中获得的所有项(对象)。如果您console.log(results)
,它应该打印数组而不是对象
假设不会有两个用户具有相同的名称,您得到的结果将只是一个包含一个对象的数组,因此您可以执行以下操作:
结果[0]。密码//获取第一个对象的密码字段
不确定这是否解决了您的问题,但根据您的代码,这就是我在其中发现的问题。我刚刚检查了:
方法返回一个数组,该数组包含游标中的所有文档。该方法完全迭代游标,将所有文档加载到RAM中并耗尽游标
因此toArray()
将返回一个数组,而不是对象,因此您的结果将是一个数组,其中包含从数据库中获得的所有项(对象)。如果您console.log(results)
,它应该打印数组而不是对象
假设不会有两个用户具有相同的名称,您得到的结果将只是一个包含一个对象的数组,因此您可以执行以下操作:
结果[0]。密码//获取第一个对象的密码字段
不确定这是否解决了您的问题,但基于您的代码,这就是我在其中发现的问题。您可以发布结果对象吗?我无法从powershell复制,但它返回以下内容:
[{u id:123456,name:'username',password:'yourpassword'}]
(再加上一些目前不重要的数据)您可以发布结果对象吗?我无法从powershell复制,但它返回以下内容:[{{u id:123456,name:'username',password:'yourpassword'}]
(再加上一些目前不重要的数据)噢,我在去bug过程中感到困惑,因为我第一次错误地调试了res[0]而不是结果[0]并且认为数组是空的。。。。现在一切又变得有意义了:)哦,我在去bug过程中感到困惑,因为我第一次错误地调试了res[0]而不是结果[0],并认为数组是空的。。。。现在一切都有了意义:)