“msg”:“parsingJSON字段值时出错,意外的OBJECT_START

我正在使用节点和mongoose更新沃森排名和检索数据库。 我正在尝试将文档添加到集合中。 我可以添加一个文件。 但是,我为多个创build的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]},…

当我尝试删除{在添加前面,我得到一个错误(缺less)参数列表后),它不会运行。

看看testing代码 ,我认为你需要使用一个简单的文档对象数组:

 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中被翻译为一个对象。
而一个对象不能有多个属性命名相同。

你可能需要的是一个简单的排列:

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

[ add: {doc: [Object] }, add : {doc: [Object] }, ...是无效的,因为这些键不是唯一的。

你的代码是正确的,我想。 只要改变这个callback(null, documents);

我认为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); } });