执行 SQL 执行前后台脚本(执行在服务器端)
设置此脚本可以满足以下需求:
- SQL 执行前需要对参数做后台校验。
- SQL 执行前需要改变或者新增参数。
【例】
if (!@11-PHONE@) {
// 校验不合法则调用 done 方法,并设置 success 参数为 false。
// 不论本次执行成功失败,需要调用 done 方法表示本次过程结束。
// done 方法的第一个参数传递系统级 err,第二个参数传递常规结
// 果对象(包含 success 和 message 字段)。
done(null, {
success: false,
message: '电话号码必填'
});
return;
}
/* 可以根据情况再做一次 IO 来深度校验某些参数,然后调用 done() 方法。*/
// var dbService = Enhancer.getDatabaseService();
// ...
/* 如果希望覆盖或者新增变量参数,则增加第三个参数传递,作为新增变量列表。*/
done(null, null, {
"11-PHONE": 9872129,
"11-NEW_VAR": "Hello" // <-- SQL 中可使用 @11-NEW_VAR@
});
也可直接调用 done 方法,让后续执行:
done();
注意:一定要调用 done 方法,程序才能继续执行。
【完整示例】
var sql = 'SELECT count(*) num FROM user WHERE name = ?';
var db = Enhancer.getDatabaseService();
db.execute(sql, [@12-NAME@], function(err, result) {
if (err) {
done(err);
return;
}
if (result.rows[0].num > 0) {
done(null, {success: false, message: '用户名已经存在!'});
return;
}
done();
});