Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MongoDB更改数据';s删除/订单更改时的索引_Arrays_Database_Mongodb_Graphql_Data Manipulation - Fatal编程技术网

Arrays MongoDB更改数据';s删除/订单更改时的索引

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

我正在尝试在我的MongoDB中存储密钥“order”。 当用户更改数据顺序时,我希望MongoDB中的其余数据相应地更改其“顺序”

然而,目前我的代码只在顺序与索引相同的情况下工作一次,并且在第二次时不能像预期的那样工作。 发生了什么事

多谢各位

对象数组

[ 
    {
            "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);
});
});
}
}