我使用node和mongoose来更新watson排名并检索数据库。我试图将文档添加到集合中。我可以添加一个文档。但是,我为多个创建的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]}, 添加:{doc:[Object]}, ...
当我尝试删除{在添加之前,我在参数列表之后得到错误(缺失))并且它不会运行。
答案 0 :(得分:0)
查看the test code,我认为您需要使用一个简单的文档对象数组:
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})
}
答案 1 :(得分:0)
[
add: {doc: [Object] },
add : {doc: [Object] },
//...
add : {doc: [Object] }
]
是一个关联数组,在JS中作为对象进行翻译 并且对象不能具有多个名为相同的属性。
你可能需要的是一个简单的arra:
[
{doc: [Object] },
{doc: [Object] },
//...
{doc: [Object] }
]
答案 2 :(得分: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);
}
});