如何将引用的 table 中的信息插入到另一个 table 中?

How can I insert information from a referenced table into another table?

我需要创建包含多个问题的表单并通过 knex 插入数据。

我首先使用 ID 和订单号创建表单,然后创建问题,这些问题需要从表单中获取 ID 才能正确分配。

// basic form insertion, id is generated automatically
return knex("forms").insert([
  { title: "Form 1 title", order: "1"} // id = gen_random_uuid();
  // form2, form3...
]};

// form_id is referenced for questions
return knex("questions").insert([
  {
    form_id: "???",
    title: "Question 1",
    order: "1"
  }
]);

我的想法是使用 select 和 where,但我无法让它们工作。

return knex.select("id").from("forms").where("order", "1")

PS。我实际上需要获取页面 --> 它们的 id 以分配表单 --> 它们的 id 以正确分配问题。但是,如果我成功了,之后可能只需要多一步。

您可以告诉 return 生成的 ID,请参阅:https://knexjs.org/#Builder-returning

然后您可以将 returned ID 用于您的第二个插入。

示例:

knex("forms").returning("id").insert([
  { title: "Form 1 title", order: "1"} // id = gen_random_uuid();
  // form2, form3...
]}
  .then(function(rows) {
    for (let i = 0; i < rows.length; i++) {
      knex("questions").insert([
        {
          form_id: rows[i].id,
          title: "Question 1",
          order: "1"
        }
      ])
    }
  });