Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Javascript 修改for循环中的对象(异步/等待)_Javascript_Arrays_Object_For Loop_Async Await - Fatal编程技术网

Javascript 修改for循环中的对象(异步/等待)

Javascript 修改for循环中的对象(异步/等待),javascript,arrays,object,for-loop,async-await,Javascript,Arrays,Object,For Loop,Async Await,如果我执行console.logusers[I].bluepages for循环,则会显示通过API获取的数据,但如果执行console.logusers[I]for循环,则不会显示新对象 此外,在我的for循环之外/之后,这些更改不可见 我还尝试使用Array.map进行此操作,但没有成功 Node.js来自我的终端的日志:猫鼬欺骗了你。它向文档中添加了一个toJSON和一个toString方法,该方法只显示模型中定义的属性。如果将其记录到控制台,将调用toString,如果将其作为json发

如果我执行console.logusers[I].bluepages for循环,则会显示通过API获取的数据,但如果执行console.logusers[I]for循环,则不会显示新对象

此外,在我的for循环之外/之后,这些更改不可见

我还尝试使用Array.map进行此操作,但没有成功


Node.js来自我的终端的日志:

猫鼬欺骗了你。它向文档中添加了一个toJSON和一个toString方法,该方法只显示模型中定义的属性。如果将其记录到控制台,将调用toString,如果将其作为json发送,则将调用toJSON

exports.allUsers = async (req, res, next) => {
  try {
    let users = await User.find({})

    console.log(users)
    // [{ role: 'user',
    //   skills: [...],
    //   email: 'first.last@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // },
    // { role: 'admin',
    //   skills: [...],
    //   email: 'first.lastname@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // } ]

    for (let i = 0; i < users.length; i++) {
      users[i].bluepages = await bluepagesApi.bluepagesMail(users[i].email)
      users[i].image = await bluepagesApi.profileimage(users[i].email)

      console.log(users[i].bluepages)
      // { 
      //   job: 'Developer',
      //   givenname: 'Tony',
      //   ismanager: 'N',
      //   employeetype: 'P'
      // }
      // { 
      //   job: 'Job Title',
      //   givenname: 'Max',
      //   ismanager: 'N',
      //   employeetype: 'P'
      // }
    }

    console.log(users)
    // [{ role: 'user',
    //   skills: [...],
    //   email: 'first.last@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // },
    // { role: 'admin',
    //   skills: [...],
    //   email: 'first.lastname@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // } ]

    return res.json({
      users: users
    })
  } catch (error) {
    next(error)
  }
}
要让用户表现为对象,请将其映射到常规对象:

console.log(
  users[0], // looks as if bluepages does not exist
  users[0].bluepages // but it does actually
);

猫鼬欺骗了你。它向文档中添加了一个toJSON和一个toString方法,该方法只显示模型中定义的属性。如果将其记录到控制台,将调用toString,如果将其作为json发送,则将调用toJSON

exports.allUsers = async (req, res, next) => {
  try {
    let users = await User.find({})

    console.log(users)
    // [{ role: 'user',
    //   skills: [...],
    //   email: 'first.last@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // },
    // { role: 'admin',
    //   skills: [...],
    //   email: 'first.lastname@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // } ]

    for (let i = 0; i < users.length; i++) {
      users[i].bluepages = await bluepagesApi.bluepagesMail(users[i].email)
      users[i].image = await bluepagesApi.profileimage(users[i].email)

      console.log(users[i].bluepages)
      // { 
      //   job: 'Developer',
      //   givenname: 'Tony',
      //   ismanager: 'N',
      //   employeetype: 'P'
      // }
      // { 
      //   job: 'Job Title',
      //   givenname: 'Max',
      //   ismanager: 'N',
      //   employeetype: 'P'
      // }
    }

    console.log(users)
    // [{ role: 'user',
    //   skills: [...],
    //   email: 'first.last@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // },
    // { role: 'admin',
    //   skills: [...],
    //   email: 'first.lastname@mail.com',
    //   education: [],
    //   createdAt: 2019-04-02T11:17:33.979Z
    // } ]

    return res.json({
      users: users
    })
  } catch (error) {
    next(error)
  }
}
要让用户表现为对象,请将其映射到常规对象:

console.log(
  users[0], // looks as if bluepages does not exist
  users[0].bluepages // but it does actually
);

mongoose根据用户模式的定义进行操作。
您应该根据用户模式的定义将bluepages和图像键添加到用户模式中。
您应该将bluepages和图像键添加到用户的模式中

这两种方法是否真的返回了承诺?还有,你是如何记录的?你能用日志及其输出显示代码吗?是的@jonaswillmsi添加了所有控制台日志和我问题中返回的数据@jonaswillmsfor循环正确执行,json在循环完成后发送。你能打印i的值和数据吗?尝试使用for…of循环。这两种方法是否实际返回承诺?还有,你是如何记录的?你能用日志及其输出显示代码吗?是的@jonaswillmsi添加了所有控制台日志和我问题中返回的数据@jonaswillmsfor循环正确执行,json在循环完成后发送。你能打印i的值和数据吗?尝试使用for…of循环。