2017-12-29 23 views
0

저는 cosmos db와 azure 함수에 익숙하지 않아 아무데도 빨리 가지 않습니다. 나는 모든 튜토리얼을 태양 아래에서 문서를 만들고 읽을 수는 있지만 업데이트 및 삭제는 할 수 없었다. 아무도 푸른 색 함수를 사용하여 완전한 CRUD 튜토리얼을 가지고있는 것 같지 않습니다.azure 함수를 통해 cosmos db의 문서를 업데이트하고 삭제하십시오.

문서를 받아 업데이트하고 정상 응답을 반환하는 하늘색 함수에서 일반적인 .csx 파일을 보여줄 수 있습니까?

나는이 이미 여기

#load "..\Shared\Classes.csx" 
using System.Net; 

public static HttpResponseMessage Run(HttpRequestMessage req, 
IEnumerable<Business> businessToBeUpdated, out dynamic updatedBusiness, 
TraceWriter log) 
{ 
log.Info("C# HTTP trigger function processed a request."); 

//compiler requires this assignment 
updatedBusiness = null; 

// Get request body 
Business data = req.Content.ReadAsAsync<Business>().Result; 
businessToBeUpdated = businessToBeUpdated.FirstOrDefault<Business>(); 
log.Info(businessToBeUpdated.Count().ToString()); 
if(businessToBeUpdated != null && data != null) 
{ 
    //update it 
    businessToBeUpdated = data; 
    //updatedBusiness.id = data.id; 
    log.Info(businessToBeUpdated.website); 
} 
else{ 
    return req.CreateResponse(HttpStatusCode.BadRequest); 
} 

return req.CreateResponse(HttpStatusCode.OK); 
} 

이가 그와 관련된 구속력을 시도했습니다.

{ 
"bindings": [ 
{ 
    "authLevel": "anonymous", 
    "name": "req", 
    "type": "httpTrigger", 
    "direction": "in", 
    "route": "updatebiz/{id}" 
}, 
{ 
    "name": "$return", 
    "type": "http", 
    "direction": "out" 
}, 
{ 
    "type": "documentDB", 
    "name": "businessToBeUpdated", 
    "databaseName": "dbname", 
    "collectionName": "Businesses", 
    "sqlQuery": "Select * FROM c where c.id = {id}", 
    "connection": "connection", 
    "direction": "in" 
}, 
{ 
    "type": "documentDB", 
    "name": "updatedBusiness", 
    "databaseName": "dbname", 
    "collectionName": "Businesses", 
    "createIfNotExists": false, 
    "connection": "connection", 
    "direction": "out" 
    } 
], 
"disabled": false 
} 

답변

3

문서를 정확하게 문서를 생성하는 함수와 같은 모습으로 업데이트하는 기능의 간단한 예 : 기능 하나 또는 지정된 id와 문서가 이미 존재 여부에 따라 다른 할 것입니다.

당신이 직면 한 정확한 문제는 언급하지 않았습니다. 열거 형 객체와 단일 객체가 서로 할당되어 있어도 코드가 컴파일되지 않습니다. 그 외에는 을 null 이외에는 할당하지 마십시오.

나는 당신이 성취하려고 시도했던 것을 수행하는 실례를 가지고 왔습니다.

csx 스크립트

using System.Net; 

public class Business 
{ 
    public string id { get; set;} 
    public string name { get; set;} 
} 

public static HttpResponseMessage Run(HttpRequestMessage req, 
    Business businessToBeUpdated, out Business updatedBusiness, TraceWriter log) 
{ 
    log.Info("C# HTTP trigger function processed a request."); 

    var data = req.Content.ReadAsAsync<Business>().Result; 
    if(businessToBeUpdated == null || data == null) 
    { 
     updatedBusiness = businessToBeUpdated; 
     return req.CreateResponse(HttpStatusCode.BadRequest); 
    } 

    updatedBusiness = data; 
    // or merge data and businessToBeUpdated in some desired way 

    return req.CreateResponse(HttpStatusCode.OK); 
} 

function.json : 미하일의 반응에 추가

{ 
    "bindings": [ 
    { 
     "authLevel": "anonymous", 
     "name": "req", 
     "type": "httpTrigger", 
     "direction": "in", 
     "route": "updatebiz/{id}" 
    }, 
    { 
     "name": "$return", 
     "type": "http", 
     "direction": "out" 
    }, 
    { 
     "type": "documentDB", 
     "name": "businessToBeUpdated", 
     "databaseName": "dbname", 
     "collectionName": "Businesses", 
     "id": "{id}", 
     "connection": "connection", 
     "direction": "in" 
    }, 
    { 
     "type": "documentDB", 
     "name": "updatedBusiness", 
     "databaseName": "dbname", 
     "collectionName": "Businesses", 
     "id": "{id}", 
     "connection": "connection", 
     "direction": "out" 
    } 
    ], 
    "disabled": false 
} 
+0

, 당신은에서 샘플을 찾을 수 있습니다 [이 문서] (https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-documentdb) –

+1

나는 대답을 위해 그 기사를 위아래로 보았다. 나는 미하일의 답변이 그것에 대답한다고 생각한다. 나는 csx를 통해 업데이트하는 개념을 찾고 있었고 그의 코드는 이해하기 쉽습니다. –