所以我有一个对象数组。每个对象都有一个值索引。当我在客户端将索引值更新为0时。使用旧索引的mongo文档将使用新索引0进行更新,而其他文档将获得该索引+1 -与splice相同的前提。
基本上现在,我正在使用旧的索引进行查询,并存储id以备以后调用。
然后,我逐个更新所有其他索引。
然后,我将旧id设置为新索引。然而,它并不起作用。它增加了所有文档的'index‘错误。我需要它从每个文档的实际值newIndex ++中增加‘索引’。
或者..。如果还有其他我没见过的方法。
const {_id} = req.body.user;
const { oldIndex, newIndex } = req.body.data;
const keepIndex = await Tasks.find({_user: _id, index: oldIndex}).exec();
const saveID = keepIndex[0]._id;
let counter = newIndex;
const updateIndexId = await Tasks.updateMany({_user: _id, index: {$gte : newIndex} }, {$inc : {'index' : 1} })
.where('created_at')
.gt(moment().startOf('day'))
.lt(moment().endOf('day')).exec();
const finalUpdate = await Tasks.updateOne({_id: saveID }, { $set : {'index': newIndex}}).exec();
发布于 2018-06-02 06:36:30
好的..。所以我没有走这条路。它被证明太难了,哈哈。
相反,我从reducer获取状态,并使用更新后的状态执行axios post请求。无论如何,它只更新数据库中的索引。也许不是最好的代码:D
app.post('/api/update_task_index', async (req, res) => {
req.body.items.map(async (x, index) => {
Tasks.update({ _id: x._id }, { $set: { index: index } }).exec();
});
});
https://stackoverflow.com/questions/50648967
复制相似问题