2 执行 JavaScript 过程【选修】
如果编写通用 SQL 的方式不能满足您的特殊业务需求,那么可以编写原生后台 JavaScript 过程,控制整个执行过程。后台可供使用的 API 参考API-Server.md
- 通用示例
var sql = `UPDATE student SET name = ?
, birthday = ?, birth_place = ?
, gender = ?, phone = ?
, nation = ?, entry_year = ?
, ssn = ?, family_address = ?
, political_status = ?, school_year_length = ?
WHERE student_no = ?`;
// 直接 @变量@ 从页面取用本次过程执行需要的数据。
//【注意】要把@变量@单独放在 params 数组中传递,不要拼接 SQL 字符串,以防止 SQL 注入攻击。
var params = [
@12-NAME@, @12-BIRTHDAY@, @12-BIRTH_PLACE@
, @12-GENDER@, @12-PHONE@, @12-NATION@, @12-ENTRY_YEAR@
, @12-SSN@, @12-FAMILY_ADDRESS@, @12-POLITICAL_STATUS@
, @12-SCHOOL_YEAR_LENGTH@, @12-STUDENT_NO@
];
// Enhancer 是全局对象,直接使用。
var databaseService = Enhancer.getDatabaseService();
// 执行 SQL
databaseService.execute(sql, params, function(err, result) {
if (err) {
// 不论结果执行成功失败,需要调用 done 方法表示本次过程结束。
// done 方法的第一个参数传递系统级 err,第二个参数传递常规结
// 果对象(包含 success 和 message 字段)。
done(null, {
success: false,
message: '操作失败操作失败。' + err.message
});
return;
}
done(null, {
success: true,
message: '修改成功!'
});
});
// 注意:执行 SQL 的数据库连接的获取和释放由内部统一控制,用户无需关心。
// 如果需要做事务,可以调用 databaseService.beginTransaction 方法,
// 请参考: https://assets.wuyuan.io/enhancer/tutorials-api/1.1.8/zh-cn/api-server.html
【附】服务器端编程 API
注意:一定要调用 done 方法,程序才能继续执行
注意:不要自己拼接 SQL 字符串中的参数, 而要用 ? 来占位,然后把对应的参数值存放在 params 对象中。这样预声明处理,可以避免 SQL 注入攻击。
DEMO
使用 Enhancer 后台执行程序,结合 Enhancer 变量体系,可以使得业务逻辑的开发变得更直观和高效。