javascript - 添加到 Node 中的数组/对象

标签 javascript node.js express

我正在尝试添加到 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/

相关文章:

PHP json_decode 不适用于由 Node 12 格式良好的 JSON.stringify 引起的单个未配对代理项

Node.js Angular Jade 客户端和 Node.js Rest API

Node.js、Express 和 css、js、图片资源

javascript - 滑动时如何取消onClick事件?

javascript - React应用程序中自动脚本将js转换为jsx

javascript - 在 jquery 中,当单击其他元素时,它会触发下拉列表,并且下拉列表必须打开

javascript - 将 new Date() 转换为包含 T 的格式

Javascript ES2015 导入抛出未捕获的语法错误 : Unexpected token {

javascript - 检查动态路由 express js

mysql - 如何修复 500(内部服务器错误)?