1 回答
TA贡献1784条经验 获得超7个赞
我不得不做出一些假设,但是您可以通过$#基于数组keys(可能在模板文字中)创建标记并使用扩展符号来展开keys和db.schema.keys数组来使代码改变键的数量;看评论:
const schema = require('../schema.json').Flights;
class flightRepo {
// ^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− the convention is to capitalize this F
keys = Object.keys(schema);
create(db) {
return client.query(
`INSERT INTO flights (${keys.map((_, i) => `${i + 1}`)}) VALUES (${keys.map((_, i) => `${i + 1 + keys.length}`)})`,
...keys,
...db.schema.keys // Assumes `db.schema.keys` is known to have the same length as `keys`
);
}
}
也很高兴知道一种方法来消除在 Ln.1 中输入“Flights”JSON 键的需要
你需要说出你想要的对象的哪一部分。如果需要,您可以通过使用解构和重命名来重新定位它:
const {Flights: schema} = require('../schema.json');
...但是您所拥有的可能更清楚。或者当然,不要更改名称:
const {Flights} = require('../schema.json');
...并使用Flights而不是schema. 但是,如果它引用的不是构造函数,那么将其大写可能会造成混淆。
现在您已经显示了 JSON,我们可以看到(至少在这个例子中)Flights是对象的唯一属性。如果你可以依赖它,你可以这样做:
const data = require("./schema.json");
const schema = data[Object.keys(data)[0]];
添加回答
举报