2017-12-08 6 views
0

Meine Datenbank hat mehrere Duplikate (gleiche _id), auch nach dem Neustart und mit autoload: true lesen. Das ist seltsam, aber ich beschloss, es zu lösen, indem die setAutocompactionInterval, wie in den guide in the repository vorgeschlagen wird, und das Ergebnis war einfach TypeError: Cannot read property 'setAutocompactionInterval' of undefined.Typeerror: kann Eigenschaft ‚setAutocompactionInterval‘ undefinierter

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 

Ich weiß nicht, was diesen Fehler verursacht. Ich denke, ich werde ein Github Problem auf nedb-promise machen, aber das ist wegen eines Missbrauchs? Bin ich Missverständnis, wie es funktionieren soll? Niemand scheint diesen Fehler zu haben, nach meiner Google-Suche.

Antwort

0

Dies könnte helfen, Datenspeicher folgt lose Implementierung des NEDB. Es ist keine exakte Darstellung, das ist statt durch alle diese Zeilen Code gehen:

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

Wenn Sie den zugrunde liegenden Datenspeicher steuern möchten, können Sie es als regelmäßige Verwendung der ursprünglichen nedb Bibliothek erstellen und dann ein erstellen eingewickelte Version:

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

Ich hoffe, dass dies hilft.

Verwandte Themen