2017-10-24 20 views
0

lowdbの構文で入れ子になったJSON配列/オブジェクトにアクセスする方法を知りたいですか?'lowdb'で入れ子になったJSONオブジェクト/配列にアクセスするには?

基本的に私はlowdbファイルとしてこのような構造を持っている:

{ 
    "57": { 
    "hour": [], 
    "day": [], 
    "week": [], 
    "month": [] 
    }, 
    "58": { 
    "hour": [], 
    "day": [], 
    "week": [], 
    "month": [] 
    } 
} 

今私は動的に配列を埋めるためにしたいが、私はに任意の値をプッシュすることはできませんよ...

私のコード:

const low  = require('lowdb'); 
const FileSync = require('lowdb/adapters/FileSync') 

const adapter = new FileSync('myFile.json') 
const db  = low(adapter); 

.... 

// add new object 
db.set("57", { hour: [], day: [], week: [], month: [] }).write(); 

console.log(db.get('57').value().hour[0]); // prints ofc 'undefined' 
console.log(db.get('57').value().hour); // prints [] which is correct 

// both commands are not working | for test just push a single item 
// later the item will be another object 
// db.get('57').value().hour.push('item').write(); 
// db.get('57').hour.push('item').write(); 


// if copying first it's working well 
var tmp = db.get('57').value().hour; 
tmp.push('item'); 
console.log(tmp); // outputs [ 'item' ] 

入れ子構造のため、lowdbではこれができないと感じました。可能であれば、誰かが私にどのように教えてくれますか?

答えて

0

私は自分自身を別の方法で助けました。

私のソリューションは、lowdbからオブジェクト全体を取得し、ローカル変数にコピーし、次のとおりです。

let arrayHour = db.get(item.ITEM_ID).value().hour; 
let arrayDay = db.get(item.ITEM_ID).value().day; 
let arrayWeek = db.get(item.ITEM_ID).value().week; 
let arrayMonth = db.get(item.ITEM_ID).value().month; 

それから私がする必要があるあらゆる方法でデータを編集:

// remove obsolete value 
if (arrayHour.length >= 6) 
    arrayHour.splice(0, 1); 

if (arrayDay.length >= 24) 
    arrayDay.splice(0, 1); 

if (arrayWeek.length >= 7) 
    arrayWeek.splice(0, 1); 

if (arrayMonth.length >= 30) 
    arrayMonth.splice(0, 1); 

... 

// add new values 
arrayHour.push({name: item.NAME_DE, smkurs: item.SMKURS, ts: item.TS}); 

... 

そして押します全体のコレクションに戻る lowdb

// put the values back 
db.get(item.ITEM_ID).push({"hour": arrayHour, "day": arrayDay, "week": arrayWeek, "month": arrayMonth}).write(); 

これは正常に動作しており、lowdbはネストされたオブジェクトを処理する必要はありません。

関連する問題