私はAngular 2とElectronを使ってアプリケーションを作っており、NeDBをデータストレージとして使っています。NeDB find()の結果へのアクセス
検索サービスは、DBを使用した操作を処理するためのものですが、今はデータベース全体をロードして戻す必要があります。
search.service.ts IはngOnInitフックを持つコンポーネントの初期化時にサービスのgetData()メソッドを呼び出す方法を使用して私のコンポーネントで
import { Injectable } from '@angular/core';
import * as Datastore from 'nedb';
import * as path from 'path';
@Injectable()
export class SearchService {
constructor() { }
getData(){
var db = new Datastore({
filename: path.resolve('src/assets/db.json'),
autoload: true,
});
var result;
db.find({}, function(err, docs) {
result = docs;
});
console.log(result);
return result;
}
}
。
しかし、結果をログに記録すると、undefined
となります。
私はdocs
が見つかったので、find()
のメソッドにはアクセスできませんでしたが、result = docs
は何もしていないようです。だから私はこの仕事をするために非同期的な魔法が必要だと思っていた。私はObservablesでこれをやりたかったが、何も達成できなかった、おそらくそれを間違ってやっていた。
ありがとうございます。明確で迅速な回答ありがとうございました!しかし、私は、彼らの一貫した性質のために、私が約束の代わりに観測可能物を使用できるかどうかを知りたがっていました。私はこのサービスを使ってdb内の検索を行い、異なる情報を提供したいと思います。これは、私が集めたように、オブザーバブルではなく約束でより多くのハッシュを作成します。 –
@IvanBespalov私は観測可能なアプローチを含むように私の答えを編集しました – Dhyey