首页 > 解决方案 > 在javascript中向对象添加新属性不能正常工作?

问题描述

嗨,我遇到了一个看起来很容易的问题:我想向现有对象添加新属性,但在我的代码中它不能正常工作:

 challengeSearchNearBy: async function (longitude , latitude,min_distance,max_distance) { 
    var challengeNearBy = await Challenge.find({
        location: {
            $near: {
                $geometry: { type: "Point", coordinates: [longitude, latitude] },
                $minDistance: min_distance,
                $maxDistance: max_distance                    
            }
        }
    });//limit(30);

    const challengesPromise = challengeNearBy.map(async function(o){
        const challenger_club = await Club.findById(o.challenger_club_id);
        const conqueror_club = await Club.findById(o.conqueror_club_id);

        o.challenger_club_name = challenger_club.club_name;
        o.challenger_club_avatar = challenger_club.avatar;
        o.conqueror_club_name = ObjectHelper.isNullOrUndefined(conqueror_club)? "":conqueror_club.club_name;
        o.conqueror_club_avatar = ObjectHelper.isNullOrUndefined(conqueror_club)? "":conqueror_club.avatar;

        console.log(o.challenger_club_name); // this line logged what I want (challenger_club_name)

        return o; // but this object not contain what I want (challenger_club_name, challenger_club_avatar ...)
    });
    const challenges  = await Promise.all(challengesPromise);
    return challenges;
},

标签: javascriptjsonobjectproperties

解决方案


返回地图内的新对象。

const challengesPromise = challengeNearBy.map(async function(o){
    const challenger_club = await Club.findById(o.challenger_club_id);
    const conqueror_club = await Club.findById(o.conqueror_club_id);

    return {
      ...o,
      challenger_club_name: challenger_club.club_name,
      challenger_club_avatar: challenger_club.avatar,
      conqueror_club_name: ObjectHelper.isNullOrUndefined(conqueror_club)? "":conqueror_club.club_name,
      conqueror_club_avatar: ObjectHelper.isNullOrUndefined(conqueror_club)? "":conqueror_club.avatar;
    }
});

推荐阅读