私はMeteorアプリケーションに関数を作成しました。これは、流星コレクションに含まれるデータを '豊かにする'ように設定されています。この機能は、コレクション内で反復処理を行い、fullcontact APIを使用して、db内で管理されているすべてのクライアントエントリ(LinkedIn Bio、従業員数など)に関する追加データを取得します。Meteor.methodの '未定義'プロパティを扱う
問題は、コレクション内のすべての要素ですべてのデータポイントを使用できるわけではないことにあります(クライアントにはLinkedInプロファイルがないなど)。この関数は要素の最初のカップルで機能しますが、を投げても失敗します。data variable
には、この特定の例ではLinkedInプロファイルbioが含まれていないためです。
あなたはトレーニングとして何をお勧めしますか?何か案は?あなたの助けは大いに感謝されるでしょう - 私は数時間の間これにいました。
Meteor.methods({
enrichment() {
var fullcontact = new FullContact(Meteor.settings.fullContact);
for (var i = 1; i < customerDb.find({ company: "Qualify" }).count(); i++) {
var url = customerDb.findOne({ company: "Qualify", 'item.clientId': i.toString() })['item']['contact_website'];
var data = fullcontact.company.domain(url);
if (data['status'] == 200) {
customerDb.update ({
company: "Qualify", 'item.clientId': i.toString()
}, {
$push: {
bio: data['socialProfiles'][2]['bio'],
keywords: data['organization']['keywords'],
employees: data['organization']['approxEmployees'],
domesticTrafficRank: data['traffic']['topCountryRanking'][0],
globalTrafficRank: data['traffic']['ranking'][0]
}
});
} else {
console.log('Data could not be found on the company')
}
}
}
});
'data ['socialProfiles'] [2]'が存在しない場合、あなたは存在をチェックすることを止めていますか? (data ['socialProfiles'] [2] || {})['bio'] 'のようなものですか?それとも、バイオを手に入れることができる別の場所がありますか? – chazsolo
こんにちは@chazsolo:私はあなたが指しているものを広く理解していると思いますが、私は複数のif(typeof data ['socialProfiles'] ['2'] === '私のメソッド内の文 - 私はより洗練された、より洗練されたものを望んでいました。また、meteor.update関数内の存在を確認する方法を知ることはできません。あなたの素早い応答に感謝します - これに感謝してください! Philipp – Philipp
入れ子になったプロパティを扱うときに、オブジェクトの存在をチェックする必要があります。上記のようにインラインで実行することも、 'customerDb.update'を呼び出す前に実行することもできます。そうすれば、呼び出しの前にプッシュするオブジェクトを構築することができます。あなたは '$ push:updatedCustomerData'のようなものを残しておきます。 – chazsolo