1
PostgreSQLとKnexを使用してノードで基本的なデータベース接続をセットアップしようとしていますが、単純な挿入がうまくいかないように思えます。私はこのコードのほとんどをKnex github repoのサンプルコードに基づいています。挿入後に空のセットを解決するKnex
問題は、最初の挿入(管理者ユーザーを追加する)が、空の行セットを解決しているように思えます(ドキュメントに行または行セットについての情報が含まれていないため見つけることができます)。どのような援助がはるかに高く評価されるだろう
const knex = require("knex")({
client: "postgres",
connection: {
host : "127.0.0.1",
user : "postgres",
password : "my password goes here",
database : "issue-tracker",
charset : "utf8"
}
});
knex.schema
.dropTableIfExists("tickets")
.dropTableIfExists("users")
.createTable("users", createUserTable)
.createTable("tickets", createTicketTable)
.then(() => addTestData())
.then(() => console.log("Done"))
.catch((e) => console.log(e));
function createUserTable(table) {
table.increments("id");
table.string("username").index().unique();
table.string("password");
table.timestamps();
}
function createTicketTable(table) {
table.increments("id");
table.timestamps();
table.integer("creator_id").unsigned().references("users.id");
table.string("text");
}
function addTestData() {
return Promise.resolve()
.then(() =>
knex.insert({username: "admin", password: "password"})
.into("users")
)
.then((rows) =>
// rows is empty?
knex.insert({creator_id: rows[0], text: "this is a test"})
.into("tickets")
)
.then(() =>
knex("users").join("tickets", "users.id", "tickets.creator_id")
.select("users.id as creator_id", "users.username as creator_name", "tickets.text as text")
)
.then(console.log.bind(console));
}
:
は、ここに私のコードです。
このISN:
これは
return
が暗示ので、あまり目立たないときは、この、と等価です問題はありません。私はどんな価値を解決しようとはしていない。私はちょうどユーザーを挿入し、そのIDを解決し、(挿入されたユーザーのIDに設定されたcreator_idで)チケットを挿入しようとしています。 'addTestData'は私が気にするものは何も解決できません。問題は、最初の挿入後に 'rows'が空であることです。 – SimpleJああ。 insert文は通常、行を返しません。挿入された値を取得する方法については、https://github.com/tgriesser/knex/issues/732をご覧ください。 – Tomalak
ありがとう!問題は私が '返却 'メソッドを使用していないことでした。今働いている。あなたの答えを編集したい場合は、私はそれを受け入れます。 – SimpleJ