我试图执行以下SP
function createMyDocument() {
var collection = getContext().getCollection();
var doc = {
"someId": "123134444",
};
var options = {};
options['PartitionKey'] = ["someId"];
var isAccepted = collection.upsertDocument(collection.getSelfLink(), doc, options, function (error, resources, options) {
});
}
和cosmos继续抱怨分区密钥出现问题
{ code: 400,
body: '{"code":"BadRequest","message":"Message: {\\"Errors\\":
[\\"PartitionKey extracted from document doesn\'t match the one specified in the header\\"]}
}
有没有人知道如何传递options
中的partion键,以便通过此验证?
答案 0 :(得分:1)
想出来。错误在于我们如何调用存储过程。
我们是如何做到的
client.executeStoredProcedure('dbs/db1/colls/coll-1/sprocs/createMyDocument',
{},
{} //Here you have to pass in the partition key
);
它必须如何
client.executeStoredProcedure('dbs/db1/colls/coll-1/sprocs/createMyDocument',
{},
{"partitionKey": "43321"}
);
答案 1 :(得分:0)
我认为你误解了partitionkey
中options[]
属性的含义。
例如,我的容器创建如下:
分区键是" name"我的收藏在这里。您可以检查收藏夹的分区键。
我的文件如下:
{
"id": "1",
"name": "jay"
}
{
"id": "2",
"name": "jay2"
}
我的partitionkey
是&#39; name&#39; ,所以我在这里有两个分区:&#39; jay&#39; 和<强>&#39; jay1&#39; 强>
所以,在这里你应该在你的问题中将partitionkey
属性设置为&#39; 123134444&#39; ,而不是&#39; someId&#39; 强>
有关cosmos db partition key的更多详情。
希望它对你有所帮助。