我正在使用jquery ui的可排序函數(source)重新排列元素。我已經構建了自定義回調來創建這些元素的列表。所以當我移動一個元素時,所有元素都被賦予一個新的位置ID。它看起來是這樣的:用不同的值更新多個文檔
[{
id_of_element_in_database: 12,
new_position: 0
}, {
id_of_element_in_database: 16,
new_position: 1
}, {
id_of_element_in_database: 14,
new_position: 2
}]
我做發送此列表給我的後端簡單阿賈克斯後
$.post('/position', { data: list });
路線
router.post('/position', (req, res) => {
console.log(req.body.data); // This prints the array of objects above.
});
Schema
mongoose.Schema({
id: Number,
position: Number,
...
});
現在我無法弄清楚如何有效地改變所有文件的位置。創建一個糟糕的數組循環並執行多個數據庫請求不是最好的方法。
我試過在這裏,這感覺是錯誤的。
for (let i in req.body.data) {
collection.update({ id: req.body.data[i].id }, { position: req.body.data[i].position });
我必須做點什麼才能做到這一點。我試過谷歌沒有任何運氣。
謝謝!我會嘗試這個並回復你! –
通過這個小小的調整'parseInt(item.id)','parseInt(item.position)'並從集合中刪除了'unique'索引,這個解決方案完美無缺地工作。謝謝! –
@JonathanNielsen不用擔心,很樂意幫忙。 – chridam