2017-11-02 14 views
0

DocumentDBにJSONドキュメントがあります。NodeDBを使用してDocumentDB内のドキュメントに新しいプロパティを追加

特定のドキュメントに新しいデータを追加したいとします。

たとえば、

Add new properties to DocumentDB Document in Stored procedure

しかし、私は "のgetContextが定義されていません" を取得:

現在のドキュメント:

{ 
    "User": "ABC", 
    "UserID": "123" 
} 

新しい文書

{ 
    "User": "ABC", 
    "Height":"1.60", 
    "UserID": "123" 
} 

は、私はそのような、ここで述べたように解決策を試してみました。

私は、関数を介してドキュメントを呼び出す方法が不明であると考えています。

私が希望:

var documentURL = "dbs/'dbname'/colls/'collsname'/docs/'docsname'" 
editDocument(documentURL) 

function editDocument(document) { 
    var collection = getContext().getCollection(); 
    var response = getContext().getResponse(); 

    document.Height = "1.60"; 

    collection.createDocument(collection.getSelfLink(), document, function(err, result) { 
    if(err) throw err; 

     // Return the resulting document back as the response. 
     response.setBody(result); 
    }); 
} 

は、私が代わりにclient.replaceDocumentを使用すべきか、あるいはこれを行うには良い方法があります。

問題は、関数がドキュメント自体ではなく、関数内のテキスト位置 "dbs/colls/docs"を明示的に使用しようとしていることが原因です。

事前にお問い合わせいただきありがとうございます。

+0

実際にストアドプロシージャをCosmosにアップロードして呼び出す必要があります。 getContextはそのランタイム環境に固有であり、あなたはランダムなノードスクリプトでそれを実行できません –

+0

私は、ストアドプロシージャを使わないで文書を編集する方法はありますか? – JDT

+0

いいえ、ストアドプロシージャを使用しない限り、ドキュメント全体を作成、更新、または置換することしかできません。あなたは個々のプロパティを変更することはできません –

答えて

0

はい、代わりにreplaceDocumentを使用する必要があります。

var documentURL = "dbs/'dbname'/colls/'collsname'/docs/'docid'" 

client.readDocument(documentURL, (err, doc) => { 
    if(err) return console.log(err); 

    doc.Height = "1.60"; 

    client.replaceDocument(documentUrl, doc, (err, result) => { 
     if(err) return console.log(err); 
     console.log('replaced document'); 
    }); 
}); 
+0

素晴らしいこれは素晴らしい感謝を働いた!新しい物件のリストのどこで注文するのが簡単ですか? – JDT

+0

'replaceDocument'メットを呼び出す前にプロパティをプログラムで順序付けします。 –

+0

こんにちは、これは新しいです、あなたはプログラムで何を意味するのですか? doc.currentProperty1 = "";、doc.currentProperty2 = ""を設定します。そんな? – JDT

関連する問題