node.js从数组或对象获取数据

时间:2014-04-29 00:51:39

标签: node.js

我试图从函数中访问数据,我认为它是一个数组,所以我创建了JSON.parse()以便将数组对象拆分为var对象,但它似乎不是真正的阵列,所以我不知道它是什么。

这是代码:

app.post('/', function(request, response)
{
    console.log('POST OK');
    mongoose.connect('mongodb://localhost');

    var db = mongoose.connection;

    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback()
    {
        database.findByName(request.body.username.toLowerCase(), function(error, data)
        {
            if(error)
            {
                response.render('index',
                {
                    'Title': Title,
                    'result': 'Error, please try again later.'
                });
            }

            if(data.length > 0)
            {
                console.log(JSON.stringify(data));
                if(request.body.username == data.username && request.body.password == data.password)
                {
                    response.render('index',
                    {
                        'Title': Title,
                        'result': 'Log in success.'
                    });
                }

                else
                {
                    response.render('index',
                    {
                        'Title': Title,
                        'result': 'username/password invalid.'
                    }); 
                }
            }

            response.render('index',
            {
                'Title': Title,
                'result': 'Not found'
            });
        });
    }); 
});

其中一个if语句无效,因为data.object()未定义,因此我创建了数据日志,我得到了:

[{"username":"maggns","password":"22542214","other data"}]

JSON.parse不能正常工作,它会抛出一个错误。知道如何解析这些数据吗?

2 个答案:

答案 0 :(得分:1)

它的格式错误的JSON,你无法解析它(缺少使用正则表达式或其他东西的hacky路线)。假设您已经控制了数据,那么您应该先查看在将其放入mongodb之前如何生成该字符串。

答案 1 :(得分:0)

看起来数据是一个数组,所以你应该使用:

if(request.body.username == data[0].username && request.body.password == data[0].password) {
  // response
}