将字符串覆盖到json对象

时间:2019-04-08 09:26:20

标签: javascript node.js sequelize.js

我试图以json格式显示我的数据。首先我尝试了JSON.stringify 然后以字符串格式显示,因此,我再次尝试了JSON.parse,在这里我得到了对象数组,最后我尝试将[0]保留为它抛出“未定义”的解析对象...

你能告诉我我在哪里做错了吗。.

我提供以下console.log的输出。

try{
var timekeep =  await Orders.findAndCountAll(
    {         
        where : {
            cid : orders_info.cid,
        },      
        order: [
           ['id', 'DESC']
      ],
      limit: 1,
    }
);
 console.log("RESULT => ", timekeep); 

 var datjsn =  JSON.stringify(timekeep);
 var jsonsr = JSON.parse(datjsn);
 var data23 = jsonsr[0];

 console.log('alpha1'+ datjsn);
 console.log('delta2'+ jsonsr);
 console.log('beta'+ data23);  


output of the console logs
RESULT =>  { count: 1,
rows:
[ orders {
   dataValues: [Object],
   _previousDataValues: [Object],
   _changed: {},
   _modelOptions: [Object],
   _options: [Object],
   __eagerlyLoadedAssociations: [],
   isNewRecord: false } ] }

 alpha1 {"count":1,"rows":[ {"id":4006,"mid":1,"cid":41,"wid":7138,"oid":null,"status":null,"options":null,"starttime":"2018-08-15T06:08:55.000Z","duration":null,"ordertotal":50,"counter":null,"closetime":null}]}
 delta2 [object  Object]

 beta undefined

2 个答案:

答案 0 :(得分:0)

var data23 = jsonsr [0];

在这里您选错了地方。实际上数据在jsonsr.rows[0].

为此,您可以使用

jsonsr.rows[0];

或者如果键值未知,则使用Object.keys来获取数组中的所有对象,并且在检查proceeding with loop中的对象值的条件下使用array and length greater than 0可以获取全部数据。

答案 1 :(得分:0)

对象是续集对象,而不仅仅是对象。 尝试使用.get()

var timekeep =  await Orders.findAndCountAll(
    {         
        where : {
            cid : orders_info.cid,
        },      
        order: [
           ['id', 'DESC']
      ],
      limit: 1,
    }
);

console.log(timekeep.rows[0].get())