我正在尝试添加到 Node 中的对象:
exports.getAthleteData = function(accessToken, athleteId) {
var athleteData = {};
strava.athlete.get({'access_token': accessToken},function(err, payload) {
athleteData.push({
athleteName: payload.firstname + ' ' + payload.lastname,
profile: payload.profile,
profileMedium: payload.profile_medium,
isPremium: payload.premium,
sex: payload.sex
});
});
return athleteData;
}
调用该函数时,出现错误TypeError: attendantData.push is not a function
。
如果我删除 .push
并执行以下操作,则返回的只是 {}
。
athleteData = {
athleteName: payload.firstname + ' ' + payload.lastname,
profile: payload.profile,
...
可以肯定的是,我在控制台中转储了 payload
,它给了我我期望的 JSON 对象。
我当然错过了一些非常简单的东西。这是我第一次涉足 Node/Express,我真的很喜欢它,但在多年依赖 jQuery 之后,我需要改进我的 JavaScript。
最佳答案
push
是一个数组方法。如果您希望athleteData 是一个数组,请更改其声明:
var运动员数据=[];
可以使用括号语法动态向对象添加新键,但您需要提供键的名称。例如:
var obj = {};
var funkyKey = '1234'
obj['name'] = 'Bob';
obj['age'] = 23;
obj[funkyKey] = 'test';
console.dir(obj); // { name: 'Bob', age: 23, 1234: 'test }
是的,这类似于使用点语法:obj.name = 'Bob'
,但可以让您更好地控制新键的名称。
关于javascript - 添加到 Node 中的数组/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34549490/