вызов уровня levelDb неправильно хранит сложный объект Json - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь создать приватную цепочку блоков, используя LevelDb, и у меня возникают проблемы с сохранением сложного объекта json в levelDb.

Если я пытаюсь сохранить простую строку или число в качестве значения, это работает, но когда я пытаюсь сохранить сложный объект, как упомянуто ниже, при извлечении его всегда дается [объект объекта]. Пожалуйста, смотрите код ниже.

class Test {
    constructor() {
    this.level = require('level')

    // 1) Create our database, supply location and options.
    //    This will create or open the underlying store.
    this.db = this.level('my-db')

}

    test() {
        const self = this;
        // 2) Put a key & value
        self.db.put('name', {
            a: 123,
            b: 234,
            c: {
                d: 'dddddd'
            }
        }, function (err) {
            if (err) return console.log('Ooops!', err) // some kind of I/O error

            // 3) Fetch by key
            self.db.get('name', function (err, value) {
                if (err) return console.log('Ooops!', err) // likely the key was not found

                // Ta da!
                console.log('name=' + JSON.parse(JSON.stringify(value))); // Does not work shows [object Object]
                // console.log('name=' + JSON.stringify(value)); // Does not work shows [object Object]            
                // console.log('name=' + JSON.parse(value)); // Does not work shows ERROR SyntaxError: Unexpected token o in JSON at position 1
            })
        })
    }

}

1 Ответ

0 голосов
/ 27 марта 2019

хорошо, я исправил это, используя JSON.stringify (complexJsonObject) с вызовом put, подобным этому

test() {
    const self = this;
    // 2) Put a key & value
    self.db.put('name', JSON.stringify({
        a: 123,
        b: 234,
        c: {
            d: 'dddddd'
        }
    }), function (err) {
        if (err) return console.log('Ooops!', err) // some kind of I/O error

        // 3) Fetch by key
        self.db.get('name', function (err, value) {
            if (err) return console.log('Ooops!', err) // likely the key was not found

            // Ta da!
            console.log('name=' + JSON.parse(JSON.stringify(value))); // Does not work shows [object Object]
            // console.log('name=' + JSON.stringify(value)); // Does not work shows [object Object]            
            // console.log('name=' + JSON.parse(value)); // Does not work shows ERROR SyntaxError: Unexpected token o in JSON at position 1
        })
    })
}
...