我一直在关注创建RESTful API的Youtube教程(我刚刚掌握了这个领域)。该教程是关于书籍的,但我想扩展它以支持geoJSON,因为这是我的最终目标。
如果字段位于文档的根目录下,我可以更新字段,例如:
first_name: object.first_name,
我不明白的是如何更新作为子文档的一部分存在的字段:
geometry: { coordinates: [] },
我尝试过使用geometry.coordinates和上面的结构,其中有一些已经有效。
这就是我所拥有的:
从对象模型更新功能
// Update Object
module.exports.updateObject = function(id, object, options, callback)
{
var query = { _id: id};
var update = {
geometry:
{
type: object.geometry.type,
coordinates: object.geometry.coordinates
},
properties:
{
icon: object.properties.icon,
title: object.properties.title,
description: object.properties.description
}
}
User.findOneAndUpdate(query, update, options, callback);
};
app app来自app.js
app.put('/api/objects/:_id', function(req, res)
{
var id = req.params._id
var object = req.body;
Object.updateObject(id, object, {}, function(err, object)
{
if (err)
{
res.json(err);
}
res.json(object);
});
});
来自网络的PUT请求
{
"geometry":
{
"type": "Point",
"coordinates": [-90.5299938027191, 24.42859997065679]
},
"properties":
{
"icon": "bar-15",
"title": "Bar",
"description": "A Bar"
}
}
HTTP响应
200 OK
Date: Fri, 20 Jan 2017 23:24:58 GMT
ETag: W/"4-N6YlnMDB2uKZp4Zkid/wvQ"
Connection: keep-alive
X-Powered-By: Express
Content-Length: 4
Content-Type: application/json; charset=utf-8
null
示例mongo对象
{
"_id": ObjectId("58815cd0110dcc3b1e51d411"),
"geometry": {
"type": "Point",
"coordinates": [
-82.52920651436,
49.428099941567
]
},
"properties": {
"icon": "bar-15",
"title": "Bar",
"description": "A Bar",
"date": ISODate("2017-01-20T00:41:52.830Z")
},
"__v": NumberInt(0)
}
答案 0 :(得分:0)
您可以使用UserNotificationTrigger
更新非根字段
$set
答案 1 :(得分:0)
发现问题:
我从我的代码的另一部分C + P'd代码,但没有注意到我没有更新以下行:
User.findOneAndUpdate(query, update, options, callback);
为:
Object.findOneAndUpdate(query, update, options, callback);