#asp.net-core #azure-cosmosdb
#asp.net-ядро #azure-cosmosdb
Вопрос:
Я пишу SP для удаления некоторых записей. Итак, мне нужно получить записи, идентификаторы записей которых передаются как строковый массив.
function DeleteFn(email, docs) {
var container = getContext().getCollection();
var containerLink = container.getSelfLink();
var documentQuery =
{
'query': 'SELECT * FROM c where c.email = @email and ARRAY_CONTAINS(@arr, c.id) ',
'parameters': [{ 'name': '@email', 'value': email }, { 'name': '@arr', 'value': docs }]
};
container.queryDocuments(containerLink, documentQuery,
function (err, items) {
items.forEach(element => {
container.deleteDocument(element, {}, function (err, responseOptions) {
if (err) throw err;
});
});
}
});
}
где email = ‘test@test.com ‘ и docs = [«doc1″,»doc2»]
я получаю ошибку синтаксического анализа для JSON.Parse (docs).
Как выполнить этот или любой другой лучший подход к прямому удалению?
Ответ №1:
Первым параметром метода deleteDocument
должна быть documentLink. Итак, вам нужно изменить свой код на это:
container.deleteDocument(element._self, {}, function (err, responseOptions)
Затем, если вы передаете свои идентификаторы записей в виде типа String, вам необходимо изменить свой код следующим образом:
'parameters' : [{'name':'@email', 'value':email}, { 'name': '@arr', 'value': JSON.parse(docs) }]
Если вы передаете свои идентификаторы записей как пользовательский тип, ваш код может работать нормально.
'parameters': [{ 'name': '@email', 'value': email }, { 'name': '@arr', 'value': docs }]
Комментарии:
1. Спасибо, но для синтаксического анализа json я получаю это для точно такого же, как описано выше, JSON.ошибка синтаксического анализа: недопустимый символ в позиции: 1
2. Можете ли вы показать мне свой скриншот входных параметров при выполнении SP? Я протестировал его на своей стороне, он может работать нормально.