2016-10-18 13 views
0

私はNode.jsを使用していますが、Cloudbackコネクタを使用してループバックのデータソースを作成しています。updateAllループバックデータソースは、更新されたデータ内の削除を削除しません。

以下に定義するように私は、Userというモデルを定義している:

var User = db.define('User', { 
    lastName: { type: String }, 
    firstName: { type: String }, 
    skills: [] 
}); 

私は、このモデルのインスタンスを持っているよう:私はインスタンスを更新したい

{ 
    "lastName": "Doe", 
    "firstName": "John", 
    "skills": [ 
     { 
     "id": "0", 
     "text": "JAVA" 
     }, 
     { 
     "id": "1", 
     "text": "CSS" 
     }, 
     { 
     "id": "2", 
     "text": "HTML" 
     }, 
     { 
     "id": 3, 
     "text": "JAVASCRIPT" 
     }, 
     { 
     "id": 4, 
     "text": ".NET" 
     } 
    ], 
    "id": "d981b42c3a2a13da382102c76652b96e" 
    } 

のみスキルアレーようにこの情報は含まれています

"skills": [ 
     { 
     "id": "0", 
     "text": "JAVAFX" 
     }, 
     { 
     "id": "1", 
     "text": "CSS3" 
     } 
    ] 

私はこの機能を使用したい:

app.post('/updateProfile', function(req, res) { 
    User.updateAll(
    {_id:req.body.id}, 
    {skills: req.body.skills}, 
    function(err,items){ 
    if(err){ 
     res.send(err); 
    } else { 
     res.sendStatus(200); 
    } 
    }); 
}); 

しかし、私が直面する問題は、同じIDを持つスキルだけが更新されるということです。削除したいもの(この例ではHTML、JAVASCRIPT、.NET)は削除されません。

実際に更新する代わりに、スキルを実際に置き換えることはできますか?私はドキュメントに記述されているいくつかのことを試しましたが、うまくいきません。 Documentation is available here

答えて

1

ループバックコネクタクラウドのバグであることを確認しました。 それのためにバグを提出した:「メモリ」のようなhttps://github.com/strongloop/loopback-connector-cloudant/issues/44

他のループバックデータソースが正常に動作し、全体skillsオブジェクトを、置き換えられます。

回避策として、スキルのプロパティ全体を置き換えるために使用できるメダルUser.replaceById(id, {data}, cb)があります。だからあなたの場合には、それは

User.replaceById('d981b42c3a2a13da382102c76652b96e', { "lastName": "Doe", "firstName": "John", "skills": [ { "id": "0", "text": "JAVAFX" }, { "id": "1", "text": "CSS3" } ] }, function(err, replacedInstance){ // get your replaced instance here })

本の制限である必要がありhttps://github.com/strongloop/loopback-connector-cloudant/pull/34

を: パッチは、検証中であるまだ公表していない、私は限りそれは公表されています、ここで更新します方法は、lastName,firstNameのように、更新データに変更されていないプロパティも含める必要があります。

+0

私は、次のエラーが表示されます – JavascriptDeveloper

+0

essage :。 「コネクタcloudantがreplaceById操作をサポートしていないこれは、ループバックのバグではありません好ましくはGitHubの問題を経由して、コネクタの作者に連絡してください – JavascriptDeveloper

+0

を思い出させてくれてありがとう。私:パッチはまだ検証中ですが、まだリリースされていません。公開されている限り更新します:https://github.com/strongloop/loopback-connector-cloudant/pull/34 –

関連する問題