gpt4 book ai didi

Azure Cosmos DB 存储过程不返回文档

转载 作者:行者123 更新时间:2023-12-02 07:28:22 25 4
gpt4 key购买 nike

我正在尝试使用 node.js 在 Azure Cosmos DB 中创建存储过程。创建存储过程成功,但是当尝试执行它时(从 javascript/nodejs),它没有返回任何文档。

首先,我定义存储过程,然后将其注册到 Cosmos DB 中:


var DocumentDBClient = require('documentdb').DocumentClient;

var host = "our-hostname"; // Add your endpoint
var masterKey = "our-master-key"; // Add the masterkey of the endpoint

var client = new DocumentDBClient(host, {masterKey: masterKey});

var powerPlantDataReadingStoredProc = {
id: "GetPowerPlantDataReadingsSproc",
serverScript: function() {
var context = getContext();
var collection = context.getCollection();
var request = context.getRequest();
var response = context.getResponse();

var isAccepted = collection.queryDocuments(collection.getSelfLink(),
'SELECT TOP 1 * FROM c',
function(err, feed, options) {
response.setBody(JSON.stringify(feed));
});

if(!isAccepted) throw new Error("The query was not acceted by the server");
}
};

// Register stored proc
var createdStoredProc;

client.createStoredProcedure('dbs/PowerPlantDataReadings/colls/DataReadings', powerPlantDataReadingStoredProc, function(err, sproc) {
createdStoredProc = sproc;
});

以及我用来执行它的代码:

client.executeStoredProcedure("dbs/PowerPlantDataReadings/colls/DataReadings/sprocs/GetPowerPlantDataReadingsSproc", null,
{ partitionKey: "datareadings" },
function(err, results, responseHeaders) {
if(err) {
console.log("Error: ");
console.log(JSON.stringify(err));
}

if(responseHeaders) {
console.log("Headers: ");
console.log(JSON.stringify(responseHeaders));
}

console.log("Results: " + results);

if(results) {
console.log("Results: ");
console.log(JSON.stringify(results));
}
});

我在控制台中没有收到任何错误。只是一个空数组。此外,集合中有文档;-)

有人知道我在这里缺少什么吗?

提前致谢。

编辑:

从存储过程获取这些响应 header :

标题:{“缓存控制”:“无存储,无缓存”,“pragma”:“无缓存”,“传输编码”:“分块”,“内容类型” :“application/json”,“服务器”:“Microsoft-HTTPAPI/2.0”,“严格传输安全”:“max-age = 31536000”,“x-ms-last-state-change-utc”:“2017 年 9 月 5 日星期二 08:01:38.741 GMT","x-ms-schemaversion":"1.3","x-ms-alt-content-path":"dbs/PowerPlantDataReadings/colls/DataReadings/sprocs/GetPowerPlantDataReadingsSproc","x-ms-content-path":"cjFwAKg0WQA=","x-ms-quorum-acked-lsn":"25347","x-ms-current-write-quorum":"3","x -ms-current-replica-set-size":"4","x-ms-xp-role":"1","x-ms-request-charge":"6.12","x-ms-serviceversion ":"version=1.14.89.5","x-ms-activity-id":"604b8d09-ad08-427a-8dee-1b7862e0e092","x-ms-session-token":"0:25347","x -ms-gatewayversion":"version=1.14.89.5","date":"2017 年 9 月 5 日星期二 09:38:32 GMT","x-ms-throttle-retry-count":0,"x-ms -throttle-retry-wait-time-ms":0}

结果:[]

此外,在 Azure 门户上的查询编辑器中进行查询时,我确实得到了预期的结果:

enter image description here

我的分区键如下:

enter image description here

最佳答案

您是否尝试将分区键设置为实际值?这对我有用。我将分区键名称提供给存储过程输入,但实际上我给了它一个分区键 VALUE(因为存储过程在特定分区上运行)并且它起作用了。

编辑:

刚看了评论,Gaurav 似乎也建议了这种方法

关于Azure Cosmos DB 存储过程不返回文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com