2

ノードとマングースを使用して、ワトソン ランクを更新し、データベースを取得しています。コレクションにドキュメントを追加しようとしています。1 つのドキュメントを追加できます。ただし、複数用に作成しているjsonオブジェクトは失敗しています。私はこの答えをここで見ましたが、それはカール用でした。誰かがJSの部分で私を助けることができるかどうか疑問に思っていました.

    // add a document
    //var doc = { id : 1234, title_t : 'Hello', text_field_s: 'some text' };
    var data = [];

    for (var count = 0; count < documents.length ; count++){
        data.push({"add":{"doc":{id : documents[count]._id, problem : documents[count].problem, description : documents[count].description, resolution : documents[count].resolution}}})
    }

    console.log(data);

    solrClient.add(data, function(err) {
      if(err) {
        console.log('Error indexing document: ' + err);
      } else {
        console.log('Indexed a document.');
        solrClient.commit(function(err) {
          if(err) {
            console.log('Error committing change: ' + err);
          } else {
            console.log('Successfully commited changes.');
            callback(documents);
          }
        });
      }
    });

私はこれを得る:

[ { add: { doc: [Object] } },
  { add: { doc: [Object] } },
  { add: { doc: [Object] } },
  { add: { doc: [Object] } },
  { add: { doc: [Object] } },
  { add: { doc: [Object] } } ]

ただし、これが必要だと思います: [ add: {doc: [Object] }, add : {doc: [Object] }, ...

add の前にある { を削除しようとすると、エラー (引数リストの後に がありません) が表示され、実行されません。

4

3 に答える 3

0

[ add: {doc: [Object] }, add : {doc: [Object] }, ...キーが一意でないため無効です。

そして、あなたのコードは正しいと思います。このように変更するだけですcallback(null, documents);

callbackはあなたの上位の方法だと思います。

callbackしたがって、質問のサンプルコードはありません。

電話する必要はありませんcommit。追加するだけで十分です。

solrClient.add(data, function(err, added) {
      if(err) {
        console.log('Error indexing document: ' + err);
      } else {
        console.log('Indexed a document.');  
        console.log(added);      
      }
    });
于 2016-08-31T13:51:39.767 に答える
0

テスト コードを見ると、ドキュメント オブジェクトの単純な配列を使用する必要があると思います。

var data = [];

for (var count = 0; count < documents.length ; count++){
  data.push({ id : documents[count]._id, problem : documents[count].problem, description : documents[count].description, resolution : documents[count].resolution})
}
于 2016-08-31T13:49:26.507 に答える
0
[ 
    add: {doc: [Object] },
    add : {doc: [Object] },
    //...
    add : {doc: [Object] }
]

JS でオブジェクトとして変換される連想配列です。
また、オブジェクトは同じ名前の複数のプロパティを持つことはできません。

ただし、おそらく必要なのは単純なアラです。

[
    {doc: [Object] },
    {doc: [Object] },
    //...
    {doc: [Object] }
]
于 2016-08-31T13:50:50.743 に答える