Arrays MongoDB更改数据';s删除/订单更改时的索引
我正在尝试在我的MongoDB中存储密钥“order”。 当用户更改数据顺序时,我希望MongoDB中的其余数据相应地更改其“顺序” 然而,目前我的代码只在顺序与索引相同的情况下工作一次,并且在第二次时不能像预期的那样工作。 发生了什么事 多谢各位 对象数组Arrays MongoDB更改数据';s删除/订单更改时的索引,arrays,database,mongodb,graphql,data-manipulation,Arrays,Database,Mongodb,Graphql,Data Manipulation,我正在尝试在我的MongoDB中存储密钥“order”。 当用户更改数据顺序时,我希望MongoDB中的其余数据相应地更改其“顺序” 然而,目前我的代码只在顺序与索引相同的情况下工作一次,并且在第二次时不能像预期的那样工作。 发生了什么事 多谢各位 对象数组 [ { "id": "556c5a94-1555-4b13-acc5-f956d94a0ea4", "name": &qu
[
{
"id": "556c5a94-1555-4b13-acc5-f956d94a0ea4",
"name": "test",
"iconFile": "",
"order": "3"
},{},{}......
]
mongo ts文件
async orderChange(collectionName: string, workSpaceId: string, order: string) {
const db = await this.getDB();
const collection = db.collection(collectionName);
let numOrder = Number(order);
let oldOrder: number;
await collection.findOne({ id: workSpaceId }).then((res) => (oldOrder = Number(res.order)));
if (numOrder < oldOrder) {
return new Promise((resolve, reject) => {
for (let i = oldOrder - 1; i >= numOrder; i--) {
const newOrder = JSON.stringify(i + 1);
collection.updateOne({ order: JSON.stringify(i) }, { $set: { order: newOrder } }, (err, res) => {
if (err) {
reject(err);
}
resolve(res);
console.log(i, newOrder);
});
}
collection.updateOne({ id: workSpaceId }, { $set: { order: order } }, (err, res) => {
if (err) {
reject(err);
}
resolve(res);
});
});
}
if (oldOrder < numOrder) {
return new Promise((resolve, reject) => {
for (let i = oldOrder + 1; i <= numOrder; i++) {
const newOrder = JSON.stringify(i - 1);
collection.updateOne({ order: i }, { $set: { order: newOrder } }, (err, res) => {
if (err) {
reject(err);
}
resolve(res);
console.log(i, newOrder);
});
}
collection.updateOne({ id: workSpaceId }, { $set: { order: order } }, (err, res) => {
if (err) {
reject(err);
}
resolve(res);
});
});
}
}
async orderChange(collectionName:string,workSpaceId:string,order:string){
const db=wait this.getDB();
const collection=db.collection(collectionName);
设numOrder=编号(顺序);
让我们按顺序:编号;
wait collection.findOne({id:workSpaceId})。然后((res)=>(oldOrder=Number(res.order));
如果(纽莫德<旧订单){
返回新承诺((解决、拒绝)=>{
对于(让i=oldOrder-1;i>=numOrder;i--){
const newOrder=JSON.stringify(i+1);
collection.updateOne({order:JSON.stringify(i)},{$set:{order:newOrder}},(err,res)=>{
如果(错误){
拒绝(错误);
}
决议(res);
console.log(i,newOrder);
});
}
updateOne({id:workSpaceId},{$set:{order:order}},(err,res)=>{
如果(错误){
拒绝(错误);
}
决议(res);
});
});
}
如果(旧订单<新订单){
返回新承诺((解决、拒绝)=>{
对于(设i=oldOrder+1;i{
如果(错误){
拒绝(错误);
}
决议(res);
console.log(i,newOrder);
});
}
updateOne({id:workSpaceId},{$set:{order:order}},(err,res)=>{
如果(错误){
拒绝(错误);
}
决议(res);
});
});
}
}