如何覆盖从mongodb返回的对象数组中的对象键?

时间:2019-04-20 15:11:28

标签: mongodb express

我似乎无法覆盖从mongodb查询返回的数组中对象上的键...

我有这个对象数组,我只想用一个已编辑的值覆盖一个键。

基本上我想做的是,我有一个像obj.location.address这样的键,它的值可能像是wall street 34

我想在字符串中添加一个正则表达式,使其变为wall street

我尝试映射到objs数组,并尝试使用通过正则表达式传递的值的结果值覆盖键。

但是它不起作用...我的新数组不是对象数组,而是一个字符串数组,其值为obj.location.address,而这些字符串只是地址字符串,如wall street 34 ,这真是超级奇怪。

我的代码:

exports.mapUsers = async (req, res) => {
  const coordinates = [req.query.lng, req.query.lat].map(parseFloat);
  const q = {
    location: {
      $near: {
        $geometry: {
          type: 'Point',
          coordinates
        },
        $maxDistance: 10000 // 10km
      }
    }
  };

  const receivedUsers = await User.find(q).select('name location musicLinks genres photo slug skills').limit(10);

  const users = receivedUsers.map( obj => obj.location.address = obj.location.address.replace(/[0-9]/g, "").replace(/\s*,\s*/g, ", "))
  console.log(users)
  res.json(users)
};

1 个答案:

答案 0 :(得分:1)

尝试这样的映射。希望这就是您想要的。

const users = receivedUsers.map(user => {
  user.location.address = user.location.address.replace(/[0-9]/g, "").replace(/\s*,\s*/g, ", ");
  return user;
});