如何返回RegExp.$Function()调用中参数的JSON中的参数



我正在尝试向RegExp返回一组参数。$(又称JS的f-string(。

const schema = require('../schema.json').Flights;
class flightRepo{
keys = Object.keys(schema);
create(db) {    
return client.query(
"INSERT INTO flights ($1, $2, $3, $4, $5, $6) VALUES ($7, $8, $9, $10, $11, $12)",
keys[0], keys[1], keys[2], keys[3], keys[4], keys[5],
db.schema.keys[0], db.schema.keys[1], db.schema.keys[2], db.schema.keys[3], db.schema.keys[4], db.schema.keys[5]
);
}
}

关于
client.query:Deno的PostgreSQL库中的客户端对象
db:传递列表[args[0-5]用于每个键]以创建新的db条目
create:函数从PostgreSQL 返回查询状态

JSON结构

{
"Flights" : {
"FlightNo": "INT PRIMARY KEY",
"Airlines": "STRING 50",
"Time": "DATETIME",
"OnTime": "BOOLEAN",
"Dep": "STRING 4",
"Arr": "STRING 4"
}
}

我想做的是消除手动指定n个参数(键[0-5](和($1-12(的需要,而是创建一个表达式来为任何x项键列表执行此操作。

(如果知道一种方法可以消除在Ln.1中输入"Flights"JSON密钥的需要,那就太好了(

我不得不做一些假设,但您可以通过基于keys数组创建$#令牌(可能是在模板文字中(并使用扩展符号来扩展keysdb.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 中的JSON密钥

您需要说明您想要对象的哪个部分。如果你想的话,你可以通过使用带重命名的析构函数来重新定位它:

const {Flights: schema} = require('../schema.json');

但你所掌握的可能更清楚。或者,当然,不要更改名称:

const {Flights} = require('../schema.json');

并且使用CCD_ 5而不是CCD_。但是,如果它指的不是构造函数,那么将其大写可能会令人困惑。

现在您已经显示了JSON,我们可以看到(至少在本例中(Flights是对象的唯一属性。如果你可以依赖它,你可以这样做:

const data = require("./schema.json");
const schema = data[Object.keys(data)[0]];

相关内容

最新更新