【发布时间】:2016-12-29 04:12:04
【问题描述】:
我正在使用 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
}]
我通过简单的 Ajax 发布
将此列表发送到我的后端$.post('/position', { data: list });
路线
router.post('/position', (req, res) => {
console.log(req.body.data); // This prints the array of objects above.
});
架构
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 });
我必须做些别的事情来实现这一点。我试过谷歌没有任何运气。
【问题讨论】:
标签: javascript node.js mongodb mongoose