从Angular Controller

时间:2016-08-02 14:19:20

标签: javascript angularjs json mongodb mean-stack

我在从Angular Controller中将新JSON对象插入MongoDB中的JSON对象数组时遇到问题。

我想要做的一个简单概念就是这个架构:

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

要在Mongo控制台中将它添加到我的mongodb,我可以使用:

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

但是,我不确定如何将其转换为AngularJS的http请求。我使用Yeoman来构建我的应用程序,并且现在对获得功能原型更感兴趣。在我的Angular Controller中,我正在使用此功能

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 = {};
     });
}

当我调用此函数时,我将其添加到我已实例化的数组中,但即使返回了200响应代码,也无法访问实际的MongoDB。

在我的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>

我真的不知道如何将这个mongodb调用转换为我的MEAN堆栈应用程序。如果它有助于我使用Babel和EMCAScript 6.任何帮助意味着很多!

由于

1 个答案:

答案 0 :(得分:0)

在它的后端,当控件到达API中的thing函数时,你将不得不使用mongoDB驱动程序(如Mongodb,Mongoose)与mongo shell进行交互。如果你使用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'};
}

返回res.json(输出);   });