0

再起動して使用した後でも、データベースにいくつかの重複(同じ_id)がありautoload: trueます。これは奇妙ですが、リポジトリのガイドで提案されているように setAutocompactionInterval を使用して解決することにし、結果は単純にTypeError: Cannot read property 'setAutocompactionInterval' of undefined.

const Db = require('nedb-promise')
    , curry = new Db({
        filename: 'curry'
        , autoload: true
        , onload: (e) => e && console.err(e)
    })

curry.persistence.setAutocompactionInterval(3600000)
// TypeError: Cannot read property 'setAutocompactionInterval' of undefined
Db.persistence.setAutocompactionInterval(3600000)
// TypeError: Cannot read property 'setAutocompactionInterval' of undefined
Db.curry.persistence.setAutocompactionInterval(3600000)
// TypeError: Cannot read property 'persistence' of undefined

このエラーの原因がわかりません。でGithub issueを作ろうと思うのですがnedb-promise、これは誤用でしょうか?それが機能する方法を誤解していますか?私のGoogle検索によると、誰もこのエラーを持っていないようです。

4

2 に答える 2

0

これは役立つかもしれません。データストアは nedb の実装に大まかに従っています。これは、これらすべてのコード行を通過する代わりに、正確な表現ではありません。

const Db = require('nedb-promise')
    , curry = new Db({
        filename: 'curry'
        , autoload: true
        , onload: (e) => e && console.err(e)
    })

基礎となるデータストアを制御したい場合は、元のnedbライブラリを使用して通常どおり作成してから、ラップされたバージョンを作成できます。

const nedb = require('nedb')
const nedbP = require('nedb-promise')

const ds = nedb(...)
const db = nedbP.fromInstance(ds)

const Datastore = require('nedb')
const nedbPromise = require('nedb-promise')

const store = Datastore({autoload: true, filename: '...'})
const db = nedbPromise.fromInstance(store)
await db.insert(...)
store.persistence.compactDatafile()

これが役立つことを願っています。

于 2017-12-11T09:52:22.083 に答える
0

この質問はhttps://github.com/jrop/nedb-promise/issues/6で既に回答されています

nedb-promiseは持っていないpersistenceため未定義であるため、この問題はnedb直接使用して解決する必要があります。

于 2017-12-08T01:07:20.923 に答える