我正在嘗試將一個字符串插入到數組中的數據庫條目中。這是put方法本身:爲什麼我的Mongoose(findByIdAndUpdate)查詢在數據庫中更新?
app.put('/todo/:id', urlencodedParser, function(req, res) {
Todo.findByIdAndUpdate({_id:ObjectId(req.params.id)},
{ "$push": { "item": req.body } },
{ "new": true, "upsert": true },
function (err, data) {
if (err) throw err;
console.log("test");
}
); });
的問題是,日誌從不打印到控制檯這讓我覺得這個方法是不是永遠實際上被調用。我假設它是與前端部分,在這裏我呼籲按鈕put方法提交,然後?:
$('form').on('submit', function(){
var item = $('form input');
var todo = {item: item.val()};
$.ajax({
type: 'PUT',
url: '/todo/' + id,
data: todo,
success: function(data){
location.reload();
}
});
return false;
});
行爲明智的,當我點擊提交按鈕,文本框清除(如它應該),並將網址更改爲:
/todo/59bd48905a2ed911e0d480f2?item=item+to+be+inserted
Theres no errors logging in console。我哪裏錯了?
E:
這裏是我的架構,以及:
var todoSchema = new mongoose.Schema({
item: [String]
});
這裏的URL編碼分析器:
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({extended: false});
** ** findByIdAndUpdate預計只是** **的ID作爲第一個參數。您可以使用** findOneAndUpdate **傳遞一個對象以通過_id進行匹配。 –
@SteveHolgado嗯,即使傳遞只是req.params.id似乎沒有幫助 – treo
我明白你說的文本框清除,成功功能達成?如果是這樣,我在處理程序中看不到任何迴應。 'urlencodedParser'中間件是否可以響應請求並且處理程序的回調從來沒有達到? –