2017-12-08 40 views
0

autoload: trueを再起動して使用しても、データベースには複数の重複(同じ_id)があります。これは奇妙ですが、私はguide in the repositoryで提案されているようにsetAutocompactionIntervalを使用して解決することにしました。結果は単純にTypeError: Cannot read property 'setAutocompactionInterval' of undefinedでした。TypeError:未定義の 'setAutocompactionInterval'プロパティを読み取ることができません

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 

このエラーの原因はわかりません。私はnedb-promiseでGithub号を発行すると思いますが、これは誤用のためですか?私はそれがうまくいくはずのことを誤解していますか?私のGoogleの検索によると、誰もこのエラーを抱えていないようだ。

答えて

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() 

これが役立ちます。

0

この質問はすでにhttps://github.com/jrop/nedb-promise/issues/6

nedb-promiseに答えたpersistenceを持っているので、それが定義されていないので、この問題は直接nedbを使用することによって解決されなければならないものではありません。

関連する問題