asp.net-core - Azure CosmosDb 存储过程从字符串数组中选择查询
问题描述
我正在写一个 SP 来删除一些记录。所以我需要获取记录 id 作为字符串数组传递的记录。
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;
});
});
}
});
}
其中电子邮件 = 'test@test.com' 和 docs = ["doc1","doc2"]
收到 JSON.Parse(docs) 的解析错误。
如何执行此或任何更好的直接删除方法?
解决方案
方法的第一个参数deleteDocument
应该是documentLink。因此,您需要将代码更改为:
container.deleteDocument(element._self, {}, function (err, responseOptions)
然后,如果您将记录 ID 作为字符串类型传递,则需要像这样更改代码:
'parameters' : [{'name':'@email', 'value':email}, { 'name': '@arr', 'value': JSON.parse(docs) }]
如果您将记录 ID 作为自定义类型传递,您的代码可以正常工作。
'parameters': [{ 'name': '@email', 'value': email }, { 'name': '@arr', 'value': docs }]
推荐阅读
- c# - 逗号分隔的字符串到对象数组以保留数据类型
- c# - 在第一个 false 之后返回结果的验证方法
- python - 按分支和祖先对同一类中的元素进行排序
- android - 当 Android 应用程序从最近删除时,React Native 推送通知不起作用
- tcp - 一个 TCP 连接在 netstat 中报告的多个端口
- asp.net-core - 通用 O 数据控制器不返回预期结果
- push-notification - 从推送通知中识别应用程序启动
- delphi - 有没有办法从动态对象和 ID 发送数据?
- html - 如何禁用右键单击循环
- ios - 如何仅通过手表从 HealthKit 访问 distanceWalkingAndRunning?