我在从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.任何帮助意味着很多!
由于
答案 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(输出); });