我需要在IBM Worklight的JSONStore中替换多个值。 这样只保存第一个值。为什么?
.then(function() {
for (var index = 0; index < elencoSpese.length; index++) {
var spesa = elencoSpese[index];
var spesaReplace = {_id: spesa.id, json: spesa};
spesa.id_nota_spesa = idNotaSpesa;
spesa.checked = true;
WL.JSONStore.get(COLLECTION_NAME_SPESE).replace(spesaReplace);
}
})
答案 0 :(得分:1)
您希望构建一个JSONStore文档数组并将其传递给replace
API。例如:
.then(function() {
var replacementsArray = [];
for (var index = 0; index < elencoSpese.length; index++) {
var spesa = elencoSpese[index];
var spesaReplace = {_id: spesa.id, json: spesa};
spesa.id_nota_spesa = idNotaSpesa;
spesa.checked = true;
replacementsArray.push(spesaReplace);
}
return WL.JSONStore.get(COLLECTION_NAME_SPESE).replace(replacementsArray);
})
.then(function (numOfDocsReplaced) {
// numOfDocsReplaced should equal elencoSpese.length
})
我认为这发生在JSONStore API的JavaScript实现中,如果是这样的话,答案就在文档here中。 JSONStore的JavaScript实现需要串行调用代码。等待操作完成后再拨打下一个操作。当您多次调用replace
而无需等待时,您将并行而不是串行调用API。这不应该是生产环境中的问题(即Android,iOS,WP8和W8)。