#azure-functions
#azure-функции
Вопрос:
Привет, я использую функции Azure в привязках SQL-запросов к cosmos DB. В SQL-запросе я использую предложение IN, но у меня возникает проблема,
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "cosmosDB",
"name": "inputDocument",
"databaseName": "DatabaseName",
"collectionName": "CollectionName",
"connectionStringSetting": "cosmosDBConnection",
"partitionKey": "/PartitionKey",
"sqlQuery": "SELECT * FROM c WHERE c.email IN {emailList}",
"direction": "in"
}
]
Я использую параметр запроса в URL как
https://function-app.azurewebsites.net/api/TestFunction?emailList=("email1","email2")
https://function-app.azurewebsites.net/api/TestFunction?emailList=["email1","email2"] (test)
https://function-app.azurewebsites.net/api/TestFunction?emailList=(email1,email2) (test)
Но я получаю ошибку в ответе, который
"message":"Syntax error, incorrect syntax near '@emailList'"
Я использую функцию HTTP Javascript,
module.exports = async function (context, req) {
var inputDocument = context.bindings.inputDocument
inputDocument.forEach(function(user) {
context.log(user.email);
});
//context.bindings.userOutputDocument = inputDocument
context.res = {
// status: 200, /* Defaults to 200 */
body: "Ok",
};
};
В противном случае мне придется получать все документы из базы данных, что влияет на временную сложность.
С уважением,
Комментарии:
1. пожалуйста, также опубликуйте конфигурацию вашего httpTrigger
2. Я публикую javascript-функцию и полный файл JSON, пожалуйста, дайте мне знать, если вы хотите что-нибудь еще,
Ответ №1:
Возможно, вам придется включить это route
поле в конфигурацию httpTrigger, как описано здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=javascript#customize-the-http-endpoint
Тогда вы сможете использовать email
параметр в своей привязке (см. Здесь, Например).
Комментарии:
1. спасибо, позвольте мне протестировать его, но
route
могу ли я получать документы из массива. Моя проблема заключается в получении только документов, которые находятся в массиве или списке параметров запроса.