";msg":"分析JSON字段值时出错.意外的OBJECT_START

"msg":"Error parsing JSON field value. Unexpected OBJECT_START

本文关键字:quot 意外 START 出错 OBJECT 字段 msg 分析 JSON      更新时间:2023-09-26

我正在使用node和mongoose来更新watson排名和检索数据库。我正在尝试将文档添加到集合中。我可以添加一个文档。但是,我为multiple创建的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前面的{时,我在参数列表后面得到一个错误(丢失(,它不会运行。

查看测试代码,我认为您需要使用一个简单的文档对象数组:

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})
}
[ 
    add: {doc: [Object] },
    add : {doc: [Object] },
    //...
    add : {doc: [Object] }
]

是一个关联数组,在JS中转换为对象
一个对象不能有多个名称相同的属性。

然而,您可能需要的是一个简单的array:

[
    {doc: [Object] },
    {doc: [Object] },
    //...
    {doc: [Object] }
]

[ 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);      
      }
    });