2017-11-08 4 views
0

JSONペイロードをCosmosDBにダンプする簡単なAzure関数を取得するのが少し難しいです。私は、Webコンソール出力結合がJavascript Azure関数で取得されていないか存在しません

enter image description here

私はそれが自動作成されますので、この部分は作品を知っているでを統合を経由して結合cosmosDB出力を追加しました

[HTTP TRIGGER] -> [JS FUNCTION] -> [INSERT JSON TO COSMOS DB] 

:ここで必要な設定があります実行時のコレクション。

しかし、ここで私の成功は終わりです。

ここに自分のコードを含めました。

function.json

{ 
    "bindings": [ 
    { 
     "authLevel": "function", 
     "type": "httpTrigger", 
     "direction": "in", 
     "name": "req" 
    }, 
    { 
     "type": "http", 
     "direction": "out", 
     "name": "res" 
    }, 
    { 
     "type": "documentDB", 
     "name": "outputDocument", 
     "databaseName": "outDatabase", 
     "collectionName": "MyCollection", 
     "createIfNotExists": true, 
     "connection": "mydocdb_DOCUMENTDB", 
     "direction": "out" 
    } 
    ], 
    "disabled": false 
} 

index.js context.log(文脈)の

module.exports = function (context, req) { 
    context.log('JavaScript HTTP trigger function processed a request.'); 

    context.bindings.outputDocument = {test: "hello world"} 
    context.done(); 
}; 

スニペット出力 :たぶん私が見逃していることを明らかに何かがあります私はまた、コンテキスト変数を覗いてきました。そして、アウトバンドのバインディングはそこにないようです。

ポータル200 OKを取得しますが、何の値は私のcosmosdbのコレクションには表示しないで、この機能を実行する
bindings: 
    { req: 
     { originalUrl: 'https://log-ugly-url-here', 
     method: 'POST', 
     query: [Object], 
     headers: [Object], 
     body: [Object], 
     params: {}, 
     rawBody: '{\n "name": "Azure"\n}' } }, 
    bind: [Function], 

を:私はここoutputDocument見ると期待しているでしょう。

エラーはどこにも表示されません。

私が逃したかもしれないものは誰でも見ることができますか?

アップデート それは私がthis documentごとに、ペイロードの周りJSON.stringify()を使用しようとすることを推奨されていました:

context.bindings.outputDocument = JSON.stringify({test: "hello world"}); 

しかし、これで問題が解決していません。私はバインディングの設定のセクションの下のドキュメンテーションがこの戦略をお勧めしないことに気づいた。

アップデート - 2017年11月8日(10:12 AM)

は私のコレクションに結果があったかどうかを確認するために紺碧のデータエクスプローラのブレードを使用していました。私はRobo 3T Mongoクライアントを使用することに決めました。私は次のエラーを取得するコレクション照会するとき今、:

Error: error: { 
    "_t" : "OKMongoResponse", 
    "ok" : 0, 
    "code" : 1, 
    "errmsg" : "Unknown server error occurred when processing this request.", 
    "$err" : "Unknown server error occurred when processing this request." 
} 

を私はこのcosmosdbのログを見てみましたが、エラーが表示されなかっ。

+0

この文書の例によると、javascriptからのDocDBバインディングは、(JSON.stringify()で)文字列を受け取るように見えます。そのことが分かれば教えてください。 [doc here](https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-documentdb#documentdb-api-output-binding-sample) – jeffhollan

+0

入力いただきありがとうございます。残念ながらそれはどちらもうまくいきませんでした。私はこれを解決するまで、元の質問をさまざまな戦略で更新しています。 –

+1

あなたの初期コードは私のためにうまく動作します。私は "hello world"ドキュメントを挿入しました。 'context.log(context)'は同じなので、問題はありません。ちょうどの場合:ドキュメントは自動生成されたIDを取得します。多分あなたはそれを見ないでしょうか? – Mikhail

答えて

0

私もこれに遭遇しました。私はこれ見るまで私の頭を叩いて保持:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-integrate-store-unstructured-data-cosmosdb

ルックス「この時、AzureのコスモスDBトリガー、入力バインディング、および出力バインディングは、SQL APIとグラフAPIアカウントのみで動作します」誤ってデータベースを破壊するバグがAzureにあるようなものです。

関連する問題