0

私は演習として、martini、golang、および postgresql を使用してソーシャル ネットワーク タイプのサーバーを構築し、3 つすべてのスキルを伸ばすことに取り組んでいます。私を逃しているいくつかの重要なことは、ユーザーテーブルからユーザー情報テーブルの正しい行に主キーを挿入する方法です(ユーザー情報を特定のユーザーに接続するため)。両方のクエリをより簡潔なpostgresスクリプトに統合する方法もあると確信しています...

func CreateUser(ren render.Render, r *http.Request, db *sql.DB) {

  _, err := db.Query("INSERT INTO users (first, last, email, password, karma, value) SELECT  CAST ($3 AS VARCHAR), $1, $2, $4, $5, $6 WHERE NOT EXISTS (SELECT * FROM users WHERE email = $3)",
    r.FormValue("first"),
    r.FormValue("last"),
    r.FormValue("email"),
    r.FormValue("password"),
    0,
    0)

  PanicIf(err)

  _, err = db.Query("INSERT INTO userinfo (usr, dob, phonenum, bio, mates, bought, sold) VALUES ($1, $2, $3, $4, $5, $6, $7)",
        0,
        r.FormValue("dob"),
        r.FormValue("phonenum"),
        r.FormValue("bio"),
        0,
        0,
        0)

  PanicIf(err)

  ren.Redirect("/")
}

ユーザーテーブルを作成するスクリプトは次のとおりです。

DROP TABLE IF EXISTS "public"."users";
CREATE TABLE "public"."users" (
    "id" serial NOT NULL,
    "first" varchar(40) NOT NULL COLLATE "default",
    "last" varchar(40) NOT NULL COLLATE "default",
    "email" varchar(40) NOT NULL COLLATE "default",
    "password" varchar(40) NOT NULL COLLATE "default",
    "karma" int NOT NULL,
    "value" int NOT NULL
)
WITH (OIDS=FALSE);

本番レベルのコードでは、このようにパスワードを保存したくないことに気づきました。m.get および m.post コマンドによって作成された非グローバル パラメータをデータベースにプルする方法にも困惑しています。

 m.Post("/newuser", CreateUser)
 m.Get("/user", NewUser)

ユーザーからのキーを統合して userinfo の適切なエントリに追加するためのアドバイスをいただければ幸いです...これらはおそらく信じられないほどばかげた質問だと思いますが、私の素朴さを許してください。

4

1 に答える 1