2

我正在使用节点和猫鼬来更新沃森排名并检索数据库。我正在尝试将文档添加到集合中。我可以添加一个文档。但是,我为多个创建的 json 对象失败了。我在这里看到了这个答案,但它是针对 curl 的。我想知道是否有人可以帮助我处理 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] }, ...

当我尝试删除添加前面的 { 时,我在参数列表之后收到一个错误(缺少)并且它不会运行。

4

3 回答 3

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中翻译为对象。
并且一个对象不能有多个同名的属性。

但是,您可能需要的是一个简单的 arra:

[
    {doc: [Object] },
    {doc: [Object] },
    //...
    {doc: [Object] }
]
于 2016-08-31T13:50:50.743 回答
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 回答