不知道我是否完全按照写入方式执行此操作,这是第一次尝试写入文档更新REST API调用。更新Mongoose文档失败TypeError:无法读取未定义的属性'坐标'
我希望api调用只提供他们想要更新的文档的字段,所以我要检查每个字段是否有数据然后添加它,或者如果不是为了避免字段被忽略而忽略。
正如你所看到的,我已经试过检查字段是否未定义,或字段是否存在,它们都导致相同的服务器错误。
app.put('/api/objects/update/:_id', function(req, res)
{
var id = req.params._id
var object;
if (typeof req.body.geometry.coordinates !== undefined) { object.geometry.coordinates = req.body.geometry.coordinates; }
if (req.body.properties.name) { object.properties.name = req.body.properties.name; }
Object.updateObject(id, object, {}, function(err, object)
{
if (err)
{
res.json(err);
console.log("Object Not Found: " + id);
}
res.json(object);
console.log("Updated Object: " + id);
});
});
这就是会被提交req.body的内容:
{
"properties":
{
"name": "Ted"
}
}
服务器错误召唤出第一个if语句和失败。
TypeError: Cannot read property 'coordinates' of undefined
at /opt/bitnami/apps/API/app.js:221:31
第一个问题是我可以检查一个未定义的属性来跳过它吗? 我应该这样做吗?如果任何人有更好的方式的例子,我都耳朵。
谢谢,我看到你说的话对变量的结构,但错误我得到在该行的前一部分,即'if(typeofreq.body.geometry.coordinates!== undefined)'部分。 这是我试图提交的身体对象(我将这个添加到原始问题),我不能重新构造这个语句,因为它是外部的。 '{ “属性”: { \t “名”: “泰德” } }' – stuffyjoelab
我明白了,REQ。body没有几何体这样的字段,因此,req.body.geometry是未定义的。你需要检查req.body.geometry是否存在。 –