2016-08-02 10 views
0

Angular ControllerからMongoDBのJSONオブジェクトの配列に新しいJSONオブジェクトを挿入する際に問題が発生しています。Angular ControllerからMongoにドキュメント配列を追加する

var ThingSchema = new mongoose.Schema({ 
    id: Number, 
    items: [{ 
     item_id: Number, 
     item_name: String, 
     item_price: Number 
    }] 
}); 

そして、私が使用することができますモンゴコンソールでの私のMongoDBに追加するには:

db.things.update( 
{ "_id": ObjectId("579b7860b168c80c1fe8a32a")}, 
{ $push: { 
    "items": { 
     "item_id" : 134, 
     "item_name" : "sampleItem", 
     "item_price" : 234.00 
    }} 
}) 

しかし

私がやろうとしています何のシンプルなコンセプトは、このスキーマのためです、私はAngularJSからのhttp要求にそれをどのように翻訳することができるか分かりません。私はYeomanを使って私のアプリを足場にし、今すぐ機能的なプロトタイプを得ることにもっと興味を持っています。私の角度コントローラでは、私は、この関数を呼び出すと、私は200レスポンスコードが返されても、私はインスタンス化されているが、私は実際にMongoDBにアクセスすることはできません、私の配列に追加し

addNewItem(thing, newItem) { 
    this.$http.put('/api/things/' + thing._id, { 'items': newItem}) 
     // on success clear the fields 
    .then(response => { 
     console.log(response); 
     alert(this.newItem); 
     thing.items.push(newItem); 
     newItem = {}; 
    }); 
} 

この機能を使用しています。

そして、私のHTMLファイルに私が

<form novalidate class="condition-form"> 
    <fieldset> 
     <input type="number" ng-model="newItem.item_id" name="" placeholder="Enter item id"> 
     <input type="text" ng-model="newItem.item_name" name="" placeholder="Enter item name"> 
     <input type="number" ng-model="newItem.item_price" name="" placeholder="Enter item price"> 
     <input type="submit" ng-click="$ctrl.addNewItem(thing, newItem)" value="Add"> 
    </fieldset> 
</form> 

を持っている私は、私は私のMEANスタックアプリケーションにこのMongoDBのコールを変換する方法のための損失で本当によ。それが役に立ったら、EMCAScript 6でBabelを使用しています。

おかげで、それのバックエンドで

答えて

0

、コントロールがAPIで物事の機能に到達したときに、モンゴシェルとの相互作用のために(MongoDBは、マングースなど)MongoDBのドライバを使用する必要があります。 mongooseを使用している場合の保存関数は、次のようになります。

Things.update({'id':req.params.thing._id},{ $push : {items : req.body.items }},function (err,updated) { 
if(err){ 
    console.log(err); 
} else { 
    output = {'msg':'Updated Successfully'}; 
} 

return res.json(出力); });

関連する問題