我試圖讓使用javascript在PostgreSQL的一些更新請求,但我有一些麻煩的更新方法:只有當傳遞的值不是未定義時,如何更新表? [PostgreSQL的]
我用什麼有是這樣的:
var query = client.query("UPDATE COMPANY SET company_name=$1, phone=$2 WHERE company_id = $3", [data.company_name, data.phone, company_id_requested]);
無論data.company_name
或data.phone
的值如何,都會更新表格公司。問題是這些值可能是未定義的,但如果這些值未定義,我不想將表值更新爲NULL。
我已經嘗試了新的代碼來解決這個問題,但我真的不覺得它的清潔,尤其是因爲我必須這樣做,每次更新方法...
var queryText = "UPDATE COMPANY SET ";
var params = [];
if (data.company_name !== undefined) {
if (params.length != 0)
queryText += ", ";
params.push(data.company_name);
queryText += "company_name=$" + params.length;
}
if (data.phone !== undefined) {
if (params.length != 0)
queryText += ", ";
params.push(data.phone);
queryText += "phone=$" + params.length;
}
params.push(company_id_requested);
queryText += " WHERE company_id = $" + params.length;
console.log(queryText);
var query = client.query(queryText, params);
在這裏,我很很多構造查詢。沒有其他辦法可以做到嗎?
你不能用'節點postgres'做到這一點,因爲它不允許在查詢動態使用列名,更少的自定義類型。但是,如果你使用[pg-promise](https://github.com/vitaly-t/pg-promise),那將很容易完成。 –
再次想到,我已經爲您發佈了一個可能的解決方案;) –