[NeDBを使い方]データベースにデータをインサートしよう。
NeDBはJavaScriptで作られたデータベースです。 Node.js、nw.js、エレクトロン、ブラウザ等で動かすことができます。 Github NeDBはドキュメント型データベースでJSONをそのまま保存できます。 そのため、JavaScriptのプログラムと親和性が高く、データの取得、利用が簡単にできます。 また、NeDBはMongoDBと互換性があり、一つのデータベースはMongoDBのコレクションと対応しています。 対応は下記の通りです。
- データベース→コレクション
- データロウ→ドキュメント
NeDBのデータベースにデータをインサートする
NeDBはJSON構造を保存できるドキュメント型データベースです。 そのため、保存できるデータのタイプはJSONと同様の下記のタイプとなっています。- String
- Number
- Boolean
- Date
- null
- Array
- Objects
NeDBにインサートするドキュメントの制約事項
- 値がundefinedのフィールドは保存されません
- インサートするドキュメントが_idフィールドを持たない場合は英数字16桁の文字列が_idフィールドに保存されます。
- フィールド名は下記の命名規則があります。
- ‘$’で始まってはいけない
- ‘.’を含んではいけない
単一のドキュメントをインサートする
Nedbにデータをインサートする場合、Datastore#insertを使用します。 Datastore#insertは、下記の2つの引数をとります- document:インサートするドキュメントを指定します。
- callback:インサート終了時に呼ばれるコールバックを指定します。コールバックは下記の2つの引数をとります。引数はオプションです。
- err:インサート失敗時のメッセージ
- newDoc:インサートに成功したドキュメント。インサート時に_idフィールドを指定しなかった場合、生成された_idを含んでいます。
export function insertDocument() { let db = new Datastore(); var doc = { hello: 'world' , n: 5 , today: new Date() , nedbIsAwesome: true , notthere: null , notToBeSaved: undefined // Will not be saved , fruits: [ 'apple', 'orange', 'pear' ] , infos: { name: 'nedb' } }; db.insert(doc, function (err, newDoc) { console.log('err', err); console.log('newDoc', newDoc); }); }
複数のドキュメントをインサートする
Nedbに一度に複数のドキュメントをインサートするバルクインサートをサポートしています。 バルクインサートの場合も単一のドキュメントをインサートする場合と同様にDatastore#insertを使用します。 下記のように引数は一緒ですが、第一引数のdocumentにオブジェクトのアレイを渡すことです。- document:インサートするドキュメントのアレイを指定します。
- callback:インサート終了時に呼ばれるコールバックを指定します。コールバックは下記の2つの引数をとります。引数はオプションです。
- err:インサート失敗時のメッセージ
- newDoc:インサートに成功したドキュメントのアレイ。インサート時に_idフィールドを指定しなかった場合、生成された_idを含んでいます。
export function insertBulkDocument() { let db = new Datastore(); var doc =[{ a: 5 }, { a: 42 }, { a: 5 }]; db.insert(doc, function (err, newDoc) { console.log('err', err); console.log('newDoc', newDoc); }); }