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/0.3.0/zh-cn/api-server.html

【附】服务器端编程 API

注意:一定要调用 done 方法,程序才能继续执行

注意:不要自己拼接 SQL 字符串中的参数, 而要用 ? 来占位,然后把对应的参数值存放在 params 对象中。这样预声明处理,可以避免 SQL 注入攻击。

DEMO

使用 Enhancer 后台执行程序,结合 Enhancer 变量体系,可以使得业务逻辑的开发变得更直观和高效。

results matching ""

    No results matching ""