【发布时间】:2016-03-23 15:24:18
【问题描述】:
我正在尝试创建一个可用于更新 Mongoose 模型中的嵌套字段的服务。在以下示例中,我尝试将字段“meta.status”设置为值 2。这是服务:
angular.module('rooms').factory('UpdateSvc',['$http', function($http)
{
return function(model, id, args)
{
var url = '/roomieUpdate/' + id;
$http.put(url, args).then(function(response)
{
response = response.data;
console.log(response.data);
});
}
}]);
这是它在控制器中的调用方式:
var newStatus = {'meta.$.status' : 2};
var update = UpdateSvc("roomie", sessionStorage.getItem('userID'), newStatus);
这是模型:
var RoomieSchema = new Schema(
{
meta:
{
created:
{
type: Date,
default: Date.now
},
status:
{
type: Number,
default: '1',
}
}
}
这是路线:
app.put('/roomieUpdate/:id', function(req,res)
{
var id = req.params.id;
Roomie.findOneAndUpdate(
{_id: mongoose.Types.ObjectId(id)},
req.body,
{ new : true },
function(err, doc)
{
if(err)
{
console.log(err);
}
res.json(doc);
console.log(doc);
});
});
参数被正确接收,但我似乎无法让它工作。我什至没有收到错误消息。 console.log(doc) 只是打印出对象,字段 meta.status 保持为“1”。我已经对目标对象进行了直接的 Mongo 搜索,以确保我不只是在阅读旧文档。我尝试了很多方法,比如分离 req.body 的键和值并使用 {$set:{key:value}},但结果是一样的。
【问题讨论】:
标签: node.js mongodb mongoose updating meanjs