我似乎无法覆盖从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)
};
答案 0 :(得分:1)
尝试这样的映射。希望这就是您想要的。
const users = receivedUsers.map(user => {
user.location.address = user.location.address.replace(/[0-9]/g, "").replace(/\s*,\s*/g, ", ");
return user;
});