不知道我是否完全按照寫入方式執行此操作,這是第一次嘗試寫入文檔更新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是否存在。 –