如何访问mongoose数据:Nodejs

时间:2017-02-21 13:17:04

标签: node.js mongodb mongoose

我收到的数据是这样的:

这是代码:

User.find({ Username: user }, function(err, found_user) {

                    console.log('user data'+ found_user );

                    if(found_user.length > 0){

                        console.log('inside found user');
                        var recordings = found_user.recordings;
                        console.log(recordings)
                        for (var singleRecords in recordings){
                            console.log("Single record :"+singleRecords);
                            if(!singleRecords.isPlayed){
                                console.log(singleRecords.playingUrl);
                                twiml.play(singleRecords.playingUrl);
                                found_user.recordings[singleRecords].isPlayed = true;
                                found_user.save(function (err) {
                                    if(err)
                                        throw err
                                });


                            }
                        }
                    }

这是找到的用户的价值:

user data   { Username: 'B',
     __v: 2,
     _id: 58ac15e4b4e1232f6f118ba3,
     recordings:
      [ { isPlayed: false,
          playingUrl: 'http://localhost:8000/public/toplay/playing_file_1487672817599.mp3' },
        { isPlayed: false,
              playingUrl: 'http://localhost:8000/public/toplay/playing_file_1487672827411.mp3' } ] 
        }
inside found user

在变量found_user中。但它并没有给我任何数据。像found_user.Username一样给出了未定义的值。 我想将记录数组存储在变量中。知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

findOne() 会返回与回调中的条件匹配的文档数组,因此该行

var recordings = found_user.recordings;

无法正常工作,因为它期望文档不是数组。

您可以使用 {{3}} 方法将文档返回为:

User.findOne({ Username: user }.exec(function(err, found_user) {    
    console.log('user data'+ found_user );
    if (found_user) {
        console.log('inside found user');
        var recordings = found_user.recordings;
        console.log(recordings);
    }
});