首页 > 解决方案 > 如何使用循环创建多个对象属性

问题描述

我正在学习 JavaScrit/node.JS 并编写了下面的代码,该代码检查玩家在加入服务器并生成所有车辆后在数据库中存储了多少车辆。问题是它现在只适用于一辆车(personalVehicles 被覆盖,我相信)

mp.events.add("playerReady", (player) => {
    pool.getConnection((err, con) => {
        if (err) console.log(err)
        console.log()
            con.query("SELECT vehicleID, vehicleModel, vehicleSpawnX, vehicleSpawnY, vehicleSpawnZ FROM vehicles WHERE vehicleType = ? AND vehicleOwner = ?", ["players", player.playerID], function (err, result) {
                if (err) console.log(err)
                for (i = 0; i < result.length; i++) {
                    vehicleModel = result[i].vehicleModel
                    player.personalVehicles = mp.vehicles.new(parseInt(vehicleModel), new mp.Vector3(result[i].vehicleSpawnX, result[i].vehicleSpawnY, result[i].vehicleSpawnZ))
                }
            });
        con.release()
    });
});

我试过player.personalVehiclesplayer.personalVehicles.vehicle[i],player.personalVehicles.vehicle和切换player.personalVehicles.[i],但没有一个起作用。

我假装自动做这样的事情:

player = {
      personalVehicles = {
               vehicle1 = xxxxxxx
               vehicle2 = xxxxxxx
               vehicle3 = xxxxxxx
               and so on
                          }
}

我知道它只适用于一辆车,因为当我试图摧毁玩家的车辆时,一旦他离开,只有一辆车被摧毁(数据库中的最后一辆)。

谢谢。

标签: javascriptsqlnode.js

解决方案


const obj = {};

你不能这样做,obj['hits']['hits'] ='whyDosntWork';因为obj['hist']不存在。

你需要做:

obj['hits'] = {}

接着 obj['hits']['hits'] ='whyDosntWork';

其余的也一样...

我不明白你想在这里做什么:

obj['hits']['hits'][i]['_source.ActiveChannelReleases'][0]['ImageExports'][0]['Resolutions'][0]['Url']

但是按照我之前说的,你需要为每一步创造你想要的价值。我可以假设你想要一个'hits'中的数组


推荐阅读