#javascript #node.js #sequelize.js
#javascript #node.js #sequelize.js
Вопрос:
Я попытался отобразить свои данные в формате json. Сначала я попробовал JSON.stringify, затем он отображается в строковом формате so, затем снова я попробовал JSON.parse, где я получаю массив объектов, наконец, я попытался сохранить [0] для объекта parse, который выдает ‘undefined’…
не могли бы вы сказать мне, пожалуйста, где я делаю неправильно..
Я предоставляю вывод следующего 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
Комментарии:
1. попробуйте
jsonsr.rows[0]
2. что вы хотите в бета-версии? это не массив, поэтому вы не можете использовать jsonsr[0] напрямую. Вам нужно количество или строки? или что-то внутри строк?
3. да, мне нужны данные внутри строк.. между тем я также хочу подсчитать количество.
Ответ №1:
var data23 = jsonsr[0];
Здесь вы заняли неправильное место. На самом деле данные находятся в jsonsr.rows[0].
Для этого вы можете использовать,
jsonsr.rows[0];
или, если значение ключа неизвестно, используйте Object.keys
, чтобы получить все объекты в массиве и proceeding with loop
с условием проверки значения объекта в array and length greater than 0
может получить все данные.
Комментарии:
1. итак, я добавил вот такой var data23 = jsonsr.rows[0];
2. Да, потому что данные находятся в массиве объектов. Чтобы утешить их, вы должны изменить результат на string.
Ответ №2:
Объект — это sequelize object, а не просто object. Попробуйте использовать .get()
var timekeep = await Orders.findAndCountAll(
{
where : {
cid : orders_info.cid,
},
order: [
['id', 'DESC']
],
limit: 1,
}
);
console.log(timekeep.rows[0].get())