试图从Mongoose数据库接收值返回undefined?

时间:2016-01-20 14:13:38

标签: node.js mongodb

我一直在尝试从我创建的用于存储用户的Mongoose数据库中获取密码属性。我可以很好地获取用户名,但是当我尝试使用它来获取密码时:

HSSFRow row = (HSSFRow) rit.next();

它在控制台中记录:

User.find({ 'credentials.username': gusername }, function(err, user) {
if (err) throw err;
console.log(user);
console.log(user.credentials.password);
});

正如您所看到的,它已成功记录用户&#39;您可以在那里看到密码和用户名,但是,我无法通过Connected to the DB using Mongo! GET /login 200 66.097 ms - 1931 GET /stylesheets/style.css 304 2.212 ms - - drew [ { credentials: { password: 'tueresputa99', username: 'drew' }, __v: 0, _id: 569e5e99e7810411003c4c25 } ] /home/ubuntu/workspace/routes/index.js:127 console.log(user.credentials.password); ^ TypeError: Cannot read property 'password' of undefined at Query.<anonymous> (/home/ubuntu/workspace/routes/index.js:127:33) at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:177 :19 at /home/ubuntu/workspace/node_modules/mongoose/node_modules/kareem/index.js:109:16 at doNTCallback0 (node.js:417:9) at process._tickCallback (node.js:346:13) [nodemon] app crashed - waiting for file changes before starting... 获取密码

任何帮助表示赞赏!这非常令人沮丧:/

1 个答案:

答案 0 :(得分:2)

user函数内的callback是一个数组而不是一个对象。注意用户对象之前的JSON数组方括号 -> [ <- { credentials:

如果您的目的是找到一个用户,则应使用User.findOne功能。

请参阅:http://mongoosejs.com/docs/api.html#query_Query-findOne