2016-11-17 5 views
0

NeDBの最も単純な例を正しく実行することはできません。私のコードはメモリ内でしか動作せず、ファイルへの永続性はエラーメッセージなしで失敗し続けます。NeDBがファイルにロードまたは格納していません

loaddatabaseイベントとinsertイベントのエラーコールバックは常にnull参照をエラーとして渡します。そのため、そこに情報はありません。奇妙なことに、誰もこの問題を抱えていないようですので、私はここで何かを逃しています。すべての助けが大変ありがとうございます。

var Datastore = require('nedb'), db = new Datastore({ filename: 'test.db' }); 
 

 
db.loadDatabase(function (err) { 
 
    alert(err); // err is null, with the autoload flag no error is thrown either 
 
}); 
 

 
var doc = { hello: 'world'}; 
 

 
db.insert(doc, function (err, newDoc) { 
 
    alert(err); // err is null here as well. Doc will be in the memory storage but no persisted to file 
 
});

+0

うまくいきます。すべての場合において。 –

+0

私は電子パッケージを作成した後も同じ問題に直面しています。 –

答えて

0

この質問はかなり古いですが、私は同様の問題に直面して誰のための私の経験を共有したいと思います。ここでは

はコードです。

  1. NeDB APIはJSON入力を許可していません。あなたはjavascriptオブジェクトを入れなければなりません。 JSON入力を使用すると、エラーは返されず、何も永続化されません。
  2. 問題が発生しなかったことを通知するコールバックのエラーとして 'null'が返されます。 objが単なる(JSON)文字列の場合、NeDBは 'undefined'を返す 'key = obj [fieldname [0]]'を呼び出すため、最初のJSONドキュメントを保存するときに '未定義'キーでインデックスされます。残念ながらエラーは返されません。 2番目のドキュメントを挿入すると、 'undefined'キーがすでに使用されているため、コールバックで一意の制約違反エラーが発生します。とにかく、何も持続されません。

は多分それが誰かを助け

var Datastore = require('nedb'), db = new Datastore({ filename: 'test.db' }); 
 

 
db.loadDatabase(function (error) { 
 
    if (error) { 
 
     console.log('FATAL: local database could not be loaded. Caused by: ' + error); 
 
     throw error; 
 
    } 
 
    console.log('INFO: local database loaded successfully.'); 
 
}); 
 

 
// creating the object with new, just to make it clear. 
 
// var doc = {hello: 'world'}; should work too. 
 
function myDoc(greeting) 
 
{ 
 
    this.hello=greeting; 
 
} 
 
var doc = new myDoc('world'); 
 

 
db.insert(doc, function (error, newDoc) { 
 
    if (error) { 
 
    console.log('ERROR: saving document: ' + JSON.stringify(doc) + '. Caused by: ' + error); 
 
    throw error; 
 
    }  
 
    console.log('INFO: successfully saved document: ' + JSON.stringify(newDoc)); 
 
});

を試してみてください。 :)

関連する問題