在设置中心的【外部数据】栏中【+数据库】,在表单中给此数据库起个简单好记的唯一名,并填写连接数据库必要的信息。可用点【测试连接】检查是否能连接得上。
能连上数据库了就可以在后端服务中调用$sql.数据库名(SQL语句, 占位值)
,但还不能在前端调用;SQL也只能是带参数的预编译语句,虽然无法依赖SQL选项提供动态化,依然可以自行动态拼装,但要注意SQL注入风险,不能信赖前端传进来的任何参数。
点击左侧导航栏的【数据表】可以获取数据库的所有数据表并查询其中的数据。
点击【+SQL】添加SQL语句并起个简单好记的唯一名,不同数据库下的SQL也不能重名。前端后端都可以直接调用此SQL:$sql.SQL名(选项, 缓存, 回调)
。
缓存传入0
时表示放弃浏览器缓存而总是从数据库中读取(后端调用时传入0无意义),大于0
时(小时数,范围: 0.1 ~ 5)指示服务器把搜索结果放入缓存,以便下次快速读取。
前端取得数据后会执行回调表达式,$x是返回的数据。
数据操作语句(以INSERT/UPDATE/DELETE开头)只返回结果数组中的第一条数据。
COUNT语句如果只返回一条数据且只有一个数字,那将只返回此数字(无其它字段)。
如果查询语句有明确指明只查一条数据时(含有LIMIT 1
或TOP 1
)则只返回第一条数据。
{limit}占位符:
无limit时表示数据量不大,希望一次性取得所有数据,此时返回的是数据数组;
limit = 1时只返回一条数据对象(或404);
limit > 1时表示数据量比较大,后续希望通过自定义查询/翻页进一步过滤数据,此时返回的是复合数据结构:
{
arr: 数据数组,
all: 多次查询结果合并后的数组, 数据表格的无限滚动会用到,
count: 数据总数,
O: 选项,
limit: 限定返回的数据数,
skip: 查询跳过的条数,
find: 再次查询的简便函数。
}
$v.变量.find(Q, O)
:选项O会跟原O合并,查询条件Q会跟O.where合并,如果都不填则用原O重新查询(绕开前端缓存);O默认是{ skip: 0 },即从头重搜。