這裏是我的架構/型號:爲什麼我無法使用此代碼推送Mongoose/Express中的數組?
var todoSchema = new mongoose.Schema({
item: [String]
});
這裏是put方法
app.put('/todo/:id', urlencodedParser, function(req, res) {
Todo.findByIdAndUpdate(req.params.id,
{ "$push": { "item": req.body } },
{ "new": true, "upsert": true },
function (err, data) {
if (err) throw err;
console.log(data);
}
);
});
什麼應該發生的是它抓住ID(:身份證),並發現該ID,並推動REQ .body(這是一個字符串,來自網頁的輸入)並將其推送到項目數組。
我收到以下錯誤,當這種放叫做:
CastError: Cast to ObjectId failed for value ":id" at path "_id" for model "Todo"
這是奇怪的,因爲我沒有明確投的ID作爲的ObjectId當我使用findById()。
我已經得到它停止失敗時,我按下按鈕 - 但數據庫沒有得到串推到它(他們開始空,並保持爲空)。我在控制檯 – treo
裏面沒有收到任何錯誤put方法打印查詢值..console.log(「req.query」,req.query),並檢查id值是否是像這樣的12個字節的字符串「59b67565c8745e27f9f3cf46」 – Dinesh
我發現在put方法應該被調用時,把console.log實際上並不打印任何數據。 – treo