使用 node.js、pg-promise 的简单检查功能
Simple Check Function with node.js, pg-promise
我正在尝试在 之后编写一个简单的 check()
函数。该函数成功打印出 "True!",但是当我执行 console.log(submitModels.verifyOrganizationString(formInputs.organizationString));
时,该函数的 return 值为 undefined
。我怎样才能得到 return true
和 false
的功能?
现在函数只有 returns "Invalid organization string"
即使字符串有效。
我认为这个结果与 pg-promise
库有关,但不确定。
在文件 submit.js
中,我有:
function verifyOrganizationString(organizationString) {
db.one("select * from organizations where organization_string=", [organizationString])
.then(data => {
console.log("True!");
return true;
})
.catch(error => {
console.log("False!");
return false;
});
}
module.exports = {
verifyOrganizationString,
};
在另一个文件中,我有
const submitModels = require('../models/submit.js');
function proccessSubmission(req, res) {
var formInputs = req.body;
console.log(submitModels.verifyOrganizationString(formInputs.organizationString));
if (submitModels.verifyOrganizationString(formInputs.organizationString)) {
submitModels.insertIntoDatabase(formInputs);
res.redirect('/');
} else {
res.send("Invalid organization string");
}
}
你得到未定义的原因是因为 'verifyOrganizationString' 实际上 return 什么都没有。您需要 return 您的 db.one 链创建的承诺。
尽管在那种情况下该方法仍然不会 return true 或 false 但布尔值包含在另一个 promise 中,这样您就可以像处理 db.one。
您的问题是由于无效使用承诺和错误使用 pg-promise。
如果你想让函数return true
/false
取决于是否找到一条记录,把函数改成这样:
function verifyOrganizationString(organizationString) {
return db.oneOrNone("select * from organizations where organization_string = ",
organizationString, a => !!a);
}
然后你就可以像普通的 promise 一样使用它了:
verifyOrganizationString('bla-bla')
.then(data => {
// data = true/false
})
.catch(error => {
// error
});
另请参阅:SELECT ⇒ INSERT 个示例。
我正在尝试在 check()
函数。该函数成功打印出 "True!",但是当我执行 console.log(submitModels.verifyOrganizationString(formInputs.organizationString));
时,该函数的 return 值为 undefined
。我怎样才能得到 return true
和 false
的功能?
现在函数只有 returns "Invalid organization string"
即使字符串有效。
我认为这个结果与 pg-promise
库有关,但不确定。
在文件 submit.js
中,我有:
function verifyOrganizationString(organizationString) {
db.one("select * from organizations where organization_string=", [organizationString])
.then(data => {
console.log("True!");
return true;
})
.catch(error => {
console.log("False!");
return false;
});
}
module.exports = {
verifyOrganizationString,
};
在另一个文件中,我有
const submitModels = require('../models/submit.js');
function proccessSubmission(req, res) {
var formInputs = req.body;
console.log(submitModels.verifyOrganizationString(formInputs.organizationString));
if (submitModels.verifyOrganizationString(formInputs.organizationString)) {
submitModels.insertIntoDatabase(formInputs);
res.redirect('/');
} else {
res.send("Invalid organization string");
}
}
你得到未定义的原因是因为 'verifyOrganizationString' 实际上 return 什么都没有。您需要 return 您的 db.one 链创建的承诺。
尽管在那种情况下该方法仍然不会 return true 或 false 但布尔值包含在另一个 promise 中,这样您就可以像处理 db.one。
您的问题是由于无效使用承诺和错误使用 pg-promise。
如果你想让函数return true
/false
取决于是否找到一条记录,把函数改成这样:
function verifyOrganizationString(organizationString) {
return db.oneOrNone("select * from organizations where organization_string = ",
organizationString, a => !!a);
}
然后你就可以像普通的 promise 一样使用它了:
verifyOrganizationString('bla-bla')
.then(data => {
// data = true/false
})
.catch(error => {
// error
});
另请参阅:SELECT ⇒ INSERT 个示例。