gpt4 book ai didi

SQLQuery 不返回查询的文档

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:08 26 4
gpt4 key购买 nike

带有 Cosmos DB + Nodejs 的 Azure Function App 无法使用 SQLQuery(输入)。没有返回任何文件。

我已成功获取 Id/PartionKey 组合来返回文档。我已经在输入的 SQLQuery 字段中尝试了许多 SQL 查询组合,例如来自文档的 SQL 查询组合,但无济于事。没有错误,也没有返回文档。我希望我的查询是:

SELECT * from Users where Users.UserName = '12345'

我尝试过带或不带单引号的值。我尝试过硬编码(无绑定(bind))查询,例如:

SELECT * from Users where Users.UserName = 12345

以及具有绑定(bind)的(在 {userName} 周围有或没有单引号):

SELECT * from Users where Users.UserName = {userName}

我尝试通过将 {userName} 放入路由中来使用它:

帐户/登录名/{userName}

我还尝试使用查询中的用户名(带或不带单引号):

SELECT * from Users where Users.UserName = '{Query.userName}'

分区键是:/id

{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
}
]
}

我已经进行了许多小时的搜索和阅读,并且我知道 SQLQuery 可能无法完全支持绑定(bind),但是,即使对值进行硬编码也无法返回文档。

示例文档:

{
"id": "e90ece01373e5d011fdaef2c20d9717b",
"UserName": "17002",
"password": "newpassword",
"Address": "123 West ",
"state": "FL",
"city": "mycity",
"zip": "32222",
"phoneNumber": "3215551212",
"emailId": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="46232b272f2a06232b272f2a6825292b" rel="noreferrer noopener nofollow">[email protected]</a>",
"refNo": "0",
"aboutUs": "someplace",
........
}

函数.json:

{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post",
"get"
],
"route": "Account/login/{userName}"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "cosmosDB",
"name": "myInput",
"databaseName": "cdel",
"collectionName": "Users",
"connectionStringSetting": "cdel_DOCUMENTDB",
"direction": "in",
"sqlQuery": "SELECT * FROM Users where Users.UserName = {userName}"
}
]
}

index.js:

module.exports = async function (context, req, myInput) {
context.log('JavaScript queue trigger function processed work item');
context.log('Passed in: ' + context.bindingData.userName);
if (!myInput)
{
context.log("UserName not found");
context.res = {
status: 400,
body: "UserName not found."
}
}
else
{
context.log(req.query.password);
context.log(myInput.password);
context.log(context.bindings.myInput.password);

if (myInput.password != req.query.password) {
context.res = {
status: 400,
body: "Invalid logon."
}
}
else {
.....
}
}
context.done();
};

期望返回单个文档。没有返回。 myInput.password = 未定义

是否有某种我没有找到的查询监视器,以便我可以看到正在发生的情况?

提前感谢您的帮助。

最佳答案

Cosmos 正在返回集合,您需要从中获取第一个元素。

context.bindings.myInput[0].password

所以代码是

module.exports = async function (context, req) {
context.log('password: ' + req.body.password);
if (context.bindings.myInput.length > 0)
context.log('password cosmos: ' + context.bindings.myInput[0].password);
context.res = {
body: "OK"
};
};

关于SQLQuery 不返回查询的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58082163/

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