一般來說,javascript 是如何解釋Database {}物件的?我正在撰寫一些后端腳本來處理注冊表單驗證。特別是我需要確保用于注冊的用戶名和電子郵件當前未被使用。為此,我使用 sqlite3 包并使用幾次db.get呼叫來確定我的資料庫中是否存在注冊表中使用的用戶名和電子郵件的條目。我想使用回傳db.get來檢查它是否為空,并使用此條件來執行必要的任務。然而,db.get回傳一個Database {}我不熟悉如何使用的物件。
希望下面的偽代碼更好地描述了這個問題。這里uname回傳Database {},因此 if 陳述句永遠不會失敗。
function existance(username, email) {
let uname = db.get(sql, username, callback(err, throw));
if (uname) {
let errors = {username: 'Username already in use.'};
return errors;
}
};
編輯
此后我使用了 Gajiu 的推薦,但仍有問題。所以我有兩個檔案:
registrant_existence.js
// necessary requirements and initialisation
function registrant_existence(username) {
let uname;
let sql = 'SELECT username FROM table WHERE username=?';
db.get(sql, username, function(err, row) {
if (err) {
throw err;
} else {
uname = row;
console.log(uname);
}
});
console.log(uname);
if (uname !== undefined) {
return {username: 'Username already in use.'};
} else {
return 'DNE';
}
};
module.exports = registrant_existence;
注冊.js
let registrant_existence = require("path to registrant_existence.js");
// necessary requirements and initialisation
router.post('/', function(req, res) {
let existence = registrant_existence(req.body.username, req.body.email);
if (existence != 'DNE') {
// render registration page notifying the user
// that the username is already in use
} else {
// register the new user details
}
});
該uname變數總是不確定的。console.log(uname)如上所示,我將 放在registrant_existence.js 中的兩個位置以查看發生了什么。發生了兩件奇怪的事情。
第一個是在console.log(uname) 外面的db.get()顯示undefined在控制臺和console.log(uname) 內部的db.get()顯示期望的字串(用戶名,我知道是我的資料庫)。
第二個是,console.log(uname) 外面的db.get()在之前顯示console.log(uname)_inside的db.get()在我的控制臺。
我不知道為什么會發生這些事情。有沒有人有什么建議?
uj5u.com熱心網友回復:
你應該嘗試這樣的事情:
db.get(sql, username, (err, data) => {
// process the data here
if (err) {
return console.error(err.message);
}
return data
? console.log(data.id, data.userName)
: console.log('No username found');
});
uj5u.com熱心網友回復:
我猜您正在尋找資料庫物件的包裝器,例如物件關系映射器(ORM),這個經常使用https://sequelize.org/master/manual/getting-started.html
另一方面,對于您的特定用例,您可能想要查看此https://www.sqlite.org/lang_createtable.html#unique_constraints:unicity 通常是通過資料存盤中的約束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322871.html
標籤:javascript 节点.js 表达
