如果用户名不存在于 postgresql POOL 查询中,如何插入用户名

How to insert a username if it doesn't already exist with a postgresql POOL query

我正在制作一个游戏,我最近添加了一个服务器数据库得分保护程序,但我不知道如何插入一个用户名,如果它不存在这里是以下查询:

const addUser = (req, res) => {
    const {username, score} = req.body;
    pool.query(
        'INSERT INTO userlist (username, score) VALUES (, )',
        [username, score],
        (err) => {
            if(err){
                throw err;
            }
            res.status(201).json({status: "success", message: "User added."});
        },
    );
}

我想我必须更改查询 这也是我的 SQL 代码,用于创建 table:

CREATE TABLE userlist(
    ID SERIAL PRIMARY KEY,
    username VARCHAR(255),
    score VARCHAR(255)
);

使用 if 语句来确定用户名是否存在,然后更新它

        if (Users::where('name', $request->user_name)->exists()) {
        return response()->json(['record exist']);
} else {
        $save = new Users;
        $save->name = $request->user_name;
        $save->save();
        return response()->json(['User saved successfully.']);
}
  

处理这个问题的最好方法是让数据库验证用户名的唯一性:

alter table userlist add constraint unq_userlist_usename unique(username);

现在,如果您尝试插入单行,那么如果该行已经存在,它将 return 出错。

如果您不想出错,可以使用 on conflict 子句。但是,在这种情况下,异常似乎有助于通知用户 username 已经存在。