From 52f0b267e21cd3fec56fe50f13499a3d4bc8ad89 Mon Sep 17 00:00:00 2001 From: richardo2016 Date: Thu, 16 May 2024 08:19:41 +0000 Subject: [PATCH] deploy: c054cb6e8596b2ca0e21473bf7af2260567ebdbf --- assets/{clis_orm.md.defc569a.js => clis_orm.md.af1ba874.js} | 2 +- ...s_orm.md.defc569a.lean.js => clis_orm.md.af1ba874.lean.js} | 2 +- assets/{index.md.88519b9f.js => index.md.b0a8583e.js} | 2 +- .../{index.md.88519b9f.lean.js => index.md.b0a8583e.lean.js} | 2 +- ...r.md.1268786a.js => orm-packages_db-driver.md.f6a6f152.js} | 2 +- ...86a.lean.js => orm-packages_db-driver.md.f6a6f152.lean.js} | 2 +- ...index.md.44cbfe8a.js => orm-packages_index.md.16084e8f.js} | 2 +- ...4cbfe8a.lean.js => orm-packages_index.md.16084e8f.lean.js} | 2 +- ...s_knex.md.590518ef.js => orm-packages_knex.md.12f55c4f.js} | 2 +- ...590518ef.lean.js => orm-packages_knex.md.12f55c4f.lean.js} | 2 +- ...re.md.cc4e7362.js => orm-packages_orm-core.md.99e18458.js} | 2 +- ...7362.lean.js => orm-packages_orm-core.md.99e18458.lean.js} | 2 +- ...d.2e1faee8.js => orm-packages_orm-property.md.58648a54.js} | 2 +- ....lean.js => orm-packages_orm-property.md.58648a54.lean.js} | 2 +- ...d.2ee848a8.js => orm-packages_sql-ddl-sync.md.79deca3c.js} | 2 +- ....lean.js => orm-packages_sql-ddl-sync.md.79deca3c.lean.js} | 2 +- ...y.md.f76b2968.js => orm-packages_sql-query.md.f20cbc69.js} | 2 +- ...968.lean.js => orm-packages_sql-query.md.f20cbc69.lean.js} | 2 +- ...rm_Adapters.md.ace70fc9.js => orm_Adapters.md.1b34cce8.js} | 2 +- ...s.md.ace70fc9.lean.js => orm_Adapters.md.1b34cce8.lean.js} | 2 +- ...onnect-db.md.e5478ae3.js => orm_connect-db.md.0457fcf2.js} | 2 +- ...md.e5478ae3.lean.js => orm_connect-db.md.0457fcf2.lean.js} | 2 +- ...rted.md.9cc67bea.js => orm_getting-started.md.c1820566.js} | 2 +- ...c67bea.lean.js => orm_getting-started.md.c1820566.lean.js} | 2 +- assets/{orm_index.md.188dda7a.js => orm_index.md.2ca3cf87.js} | 2 +- ...ndex.md.188dda7a.lean.js => orm_index.md.2ca3cf87.lean.js} | 2 +- ...{orm_plugins.md.44550c04.js => orm_plugins.md.d5884768.js} | 2 +- ...ns.md.44550c04.lean.js => orm_plugins.md.d5884768.lean.js} | 2 +- ...rm_property.md.5d4952e8.js => orm_property.md.1e19e4fd.js} | 2 +- ...y.md.5d4952e8.lean.js => orm_property.md.1e19e4fd.lean.js} | 2 +- ...al-view.md.b4bb53bd.js => orm_virtual-view.md.1ab68fe7.js} | 2 +- ....b4bb53bd.lean.js => orm_virtual-view.md.1ab68fe7.lean.js} | 2 +- ...00-style.md.7e2beb45.js => rfcs_0000-style.md.cd2c7f7a.js} | 2 +- ...d.7e2beb45.lean.js => rfcs_0000-style.md.cd2c7f7a.lean.js} | 2 +- clis/orm.html | 4 ++-- index.html | 4 ++-- orm-packages/db-driver.html | 4 ++-- orm-packages/index.html | 4 ++-- orm-packages/knex.html | 4 ++-- orm-packages/orm-core.html | 4 ++-- orm-packages/orm-property.html | 4 ++-- orm-packages/sql-ddl-sync.html | 4 ++-- orm-packages/sql-query.html | 4 ++-- orm/Adapters.html | 4 ++-- orm/connect-db.html | 4 ++-- orm/getting-started.html | 4 ++-- orm/index.html | 4 ++-- orm/plugins.html | 4 ++-- orm/property.html | 4 ++-- orm/virtual-view.html | 4 ++-- rfcs/0000-style.html | 4 ++-- 51 files changed, 68 insertions(+), 68 deletions(-) rename assets/{clis_orm.md.defc569a.js => clis_orm.md.af1ba874.js} (98%) rename assets/{clis_orm.md.defc569a.lean.js => clis_orm.md.af1ba874.lean.js} (86%) rename assets/{index.md.88519b9f.js => index.md.b0a8583e.js} (99%) rename assets/{index.md.88519b9f.lean.js => index.md.b0a8583e.lean.js} (93%) rename assets/{orm-packages_db-driver.md.1268786a.js => orm-packages_db-driver.md.f6a6f152.js} (99%) rename assets/{orm-packages_db-driver.md.1268786a.lean.js => orm-packages_db-driver.md.f6a6f152.lean.js} (99%) rename assets/{orm-packages_index.md.44cbfe8a.js => orm-packages_index.md.16084e8f.js} (97%) rename assets/{orm-packages_index.md.44cbfe8a.lean.js => orm-packages_index.md.16084e8f.lean.js} (82%) rename assets/{orm-packages_knex.md.590518ef.js => orm-packages_knex.md.12f55c4f.js} (98%) rename assets/{orm-packages_knex.md.590518ef.lean.js => orm-packages_knex.md.12f55c4f.lean.js} (84%) rename assets/{orm-packages_orm-core.md.cc4e7362.js => orm-packages_orm-core.md.99e18458.js} (99%) rename assets/{orm-packages_orm-core.md.cc4e7362.lean.js => orm-packages_orm-core.md.99e18458.lean.js} (88%) rename assets/{orm-packages_orm-property.md.2e1faee8.js => orm-packages_orm-property.md.58648a54.js} (99%) rename assets/{orm-packages_orm-property.md.2e1faee8.lean.js => orm-packages_orm-property.md.58648a54.lean.js} (94%) rename assets/{orm-packages_sql-ddl-sync.md.2ee848a8.js => orm-packages_sql-ddl-sync.md.79deca3c.js} (99%) rename assets/{orm-packages_sql-ddl-sync.md.2ee848a8.lean.js => orm-packages_sql-ddl-sync.md.79deca3c.lean.js} (98%) rename assets/{orm-packages_sql-query.md.f76b2968.js => orm-packages_sql-query.md.f20cbc69.js} (99%) rename assets/{orm-packages_sql-query.md.f76b2968.lean.js => orm-packages_sql-query.md.f20cbc69.lean.js} (97%) rename assets/{orm_Adapters.md.ace70fc9.js => orm_Adapters.md.1b34cce8.js} (96%) rename assets/{orm_Adapters.md.ace70fc9.lean.js => orm_Adapters.md.1b34cce8.lean.js} (81%) rename assets/{orm_connect-db.md.e5478ae3.js => orm_connect-db.md.0457fcf2.js} (93%) rename assets/{orm_connect-db.md.e5478ae3.lean.js => orm_connect-db.md.0457fcf2.lean.js} (93%) rename assets/{orm_getting-started.md.9cc67bea.js => orm_getting-started.md.c1820566.js} (99%) rename assets/{orm_getting-started.md.9cc67bea.lean.js => orm_getting-started.md.c1820566.lean.js} (90%) rename assets/{orm_index.md.188dda7a.js => orm_index.md.2ca3cf87.js} (90%) rename assets/{orm_index.md.188dda7a.lean.js => orm_index.md.2ca3cf87.lean.js} (90%) rename assets/{orm_plugins.md.44550c04.js => orm_plugins.md.d5884768.js} (97%) rename assets/{orm_plugins.md.44550c04.lean.js => orm_plugins.md.d5884768.lean.js} (87%) rename assets/{orm_property.md.5d4952e8.js => orm_property.md.1e19e4fd.js} (96%) rename assets/{orm_property.md.5d4952e8.lean.js => orm_property.md.1e19e4fd.lean.js} (81%) rename assets/{orm_virtual-view.md.b4bb53bd.js => orm_virtual-view.md.1ab68fe7.js} (99%) rename assets/{orm_virtual-view.md.b4bb53bd.lean.js => orm_virtual-view.md.1ab68fe7.lean.js} (94%) rename assets/{rfcs_0000-style.md.7e2beb45.js => rfcs_0000-style.md.cd2c7f7a.js} (88%) rename assets/{rfcs_0000-style.md.7e2beb45.lean.js => rfcs_0000-style.md.cd2c7f7a.lean.js} (88%) diff --git a/assets/clis_orm.md.defc569a.js b/assets/clis_orm.md.af1ba874.js similarity index 98% rename from assets/clis_orm.md.defc569a.js rename to assets/clis_orm.md.af1ba874.js index a63d0301..b7853e10 100644 --- a/assets/clis_orm.md.defc569a.js +++ b/assets/clis_orm.md.af1ba874.js @@ -1,4 +1,4 @@ -import{_ as e,z as o,A as a,I as n,O as t,V as p,X as c,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"ORM CLI","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u524D\u7F6E\u8981\u6C42","slug":"\u524D\u7F6E\u8981\u6C42"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"universal \u547D\u4EE4","slug":"universal-\u547D\u4EE4"},{"level":3,"title":"upgrade","slug":"upgrade"},{"level":3,"title":"dumpModel","slug":"dumpmodel"}],"relativePath":"clis/orm.md","lastUpdated":1715603494724}',d={},i={id:"orm-cli-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#orm-cli-wip","aria-hidden":"true"},"#",-1),k=c(`

orm-cli \u547D\u4EE4\u662F\u7528\u4E8E\u5E2E\u52A9 orm \u5F00\u53D1\u8005\u8FDB\u884C\u6D4B\u8BD5\u5F00\u53D1\u7684 CLI \u5DE5\u5177.

\u524D\u7F6E\u8981\u6C42

\u5FEB\u901F\u5F00\u59CB

npm i -g @fxjs/orm-cli
+import{_ as e,z as o,A as a,I as n,O as t,V as p,X as c,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"ORM CLI","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u524D\u7F6E\u8981\u6C42","slug":"\u524D\u7F6E\u8981\u6C42"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"universal \u547D\u4EE4","slug":"universal-\u547D\u4EE4"},{"level":3,"title":"upgrade","slug":"upgrade"},{"level":3,"title":"dumpModel","slug":"dumpmodel"}],"relativePath":"clis/orm.md","lastUpdated":1715847568873}',d={},i={id:"orm-cli-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#orm-cli-wip","aria-hidden":"true"},"#",-1),k=c(`

orm-cli \u547D\u4EE4\u662F\u7528\u4E8E\u5E2E\u52A9 orm \u5F00\u53D1\u8005\u8FDB\u884C\u6D4B\u8BD5\u5F00\u53D1\u7684 CLI \u5DE5\u5177.

\u524D\u7F6E\u8981\u6C42

  • fibjs >= 0.33.0

\u5FEB\u901F\u5F00\u59CB

npm i -g @fxjs/orm-cli
 

\u4F7F\u5F97 orm \u547D\u4EE4\u5728\u5168\u5C40\u751F\u6548, \u7136\u540E\u4F7F\u7528 orm --help \u67E5\u770B\u53EF\u7528\u7684\u547D\u4EE4:

# todo: add sample
 

\u6240\u6709\u7684\u5B50\u547D\u4EE4\u6587\u6863\u4E5F\u53EF\u4EE5\u901A\u8FC7 --help \u67E5\u770B, \u6BD4\u5982 orm init-db --help \u4E0D\u4F1A\u771F\u7684\u6267\u884C\u547D\u4EE4, \u800C\u662F\u6253\u5370\u51FA\u8BE5\u547D\u4EE4\u7684\u5E2E\u52A9\u4FE1\u606F:

# todo: add sample
 

universal \u547D\u4EE4

upgrade

orm upgrade

\u68C0\u67E5\u5E76\u5347\u7EA7 orm cli \u5230\u6700\u65B0\u7248.

dumpModel

orm dumpModel <modelDefine>.js

dumpModel \u4F1A\u6253\u5370\u6570\u636E\u5E93\u4FE1\u606F, \u8BE5\u8FC7\u7A0B\u4E2D\u4F1A\u628A\u300C\u7528\u6237\u5B9A\u4E49\u7684 model\u300D\u548C\u300C\u4ECE\u5B9E\u9645\u6570\u636E\u5E93\u62BD\u8C61\u7684 model\u300D\u4E4B\u95F4\u7684 diff \u4E5F\u5199\u5165\u4E3A patch \u6587\u4EF6.

<modelDefine>.js \u88AB\u9884\u671F\u5BFC\u51FA\u4E00\u4E2A\u65B9\u6CD5, \u8BE5\u65B9\u6CD5\u4E2D\u5E94\u4F7F\u7528 ORM \u8FDE\u63A5\u67D0\u4E2A\u6570\u636E\u5E93, \u5E76\u5B9A\u4E49\u4E00\u4E9B\u6570\u636E\u6A21\u578B. \u6839\u636E ORM \u5C5E\u6027\u5B9A\u4E49\u89C4\u8303, dumpModel \u8FC7\u7A0B\u4E2D\u4F1A\u5BF9\u6570\u636E\u5E93\u4E2D\u6BCF\u4E2A\u8868 table \u5C1D\u8BD5\u5EFA\u6A21, \u5F97\u5230\u4E00\u4E9B\u5C5E\u6027\u5B9A\u4E49 dataStoreProperties, \u540C\u65F6\u7528\u6237\u5B9A\u4E49\u7684\u6240\u6709\u5C5E\u6027\u8BB0\u4E3A userDefinedProperties.

\u4E00\u4E2A\u53C2\u8003\u7684 <modelDefine>.js \u6587\u4EF6\u5982\u4E0B:

const modelConfig = {
diff --git a/assets/clis_orm.md.defc569a.lean.js b/assets/clis_orm.md.af1ba874.lean.js
similarity index 86%
rename from assets/clis_orm.md.defc569a.lean.js
rename to assets/clis_orm.md.af1ba874.lean.js
index a94032ac..c8257161 100644
--- a/assets/clis_orm.md.defc569a.lean.js
+++ b/assets/clis_orm.md.af1ba874.lean.js
@@ -1 +1 @@
-import{_ as e,z as o,A as a,I as n,O as t,V as p,X as c,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"ORM CLI","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u524D\u7F6E\u8981\u6C42","slug":"\u524D\u7F6E\u8981\u6C42"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"universal \u547D\u4EE4","slug":"universal-\u547D\u4EE4"},{"level":3,"title":"upgrade","slug":"upgrade"},{"level":3,"title":"dumpModel","slug":"dumpmodel"}],"relativePath":"clis/orm.md","lastUpdated":1715603494724}',d={},i={id:"orm-cli-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#orm-cli-wip","aria-hidden":"true"},"#",-1),k=c("",24);function m(h,g,f,_,y,v){const s=l("Badge");return r(),o("div",null,[a("h1",i,[n("ORM CLI "),t(s,{type:"warning"},{default:p(()=>[n("WIP")]),_:1}),n(),u]),k])}var M=e(d,[["render",m]]);export{x as __pageData,M as default};
+import{_ as e,z as o,A as a,I as n,O as t,V as p,X as c,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"ORM CLI","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u524D\u7F6E\u8981\u6C42","slug":"\u524D\u7F6E\u8981\u6C42"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"universal \u547D\u4EE4","slug":"universal-\u547D\u4EE4"},{"level":3,"title":"upgrade","slug":"upgrade"},{"level":3,"title":"dumpModel","slug":"dumpmodel"}],"relativePath":"clis/orm.md","lastUpdated":1715847568873}',d={},i={id:"orm-cli-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#orm-cli-wip","aria-hidden":"true"},"#",-1),k=c("",24);function m(h,g,f,_,y,v){const s=l("Badge");return r(),o("div",null,[a("h1",i,[n("ORM CLI "),t(s,{type:"warning"},{default:p(()=>[n("WIP")]),_:1}),n(),u]),k])}var M=e(d,[["render",m]]);export{x as __pageData,M as default};
diff --git a/assets/index.md.88519b9f.js b/assets/index.md.b0a8583e.js
similarity index 99%
rename from assets/index.md.88519b9f.js
rename to assets/index.md.b0a8583e.js
index 8f64f874..f84b73a6 100644
--- a/assets/index.md.88519b9f.js
+++ b/assets/index.md.b0a8583e.js
@@ -1,4 +1,4 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"/images/cover_photo_symbol.png","heroAlt":"Logo image","heroText":" ","features":[{"title":"\u5FEB\u901F\u5F00\u59CB","details":"\u5B66\u4E60\u6210\u672C\u4F4E, \u7B80\u5355\u6613\u4E0A\u624B"},{"title":"TypeScript Powered","details":"\u6240\u6709\u6A21\u5757\u5747\u91C7\u7528 TypeScript \u5F00\u53D1, \u63D0\u4F9B\u7C7B\u578B\u6587\u4EF6"},{"title":"Monorepo","details":"\u57FA\u4E8E monorepo \u98CE\u683C\u7EC4\u7EC7\u6A21\u5757\u5305\u548C\u4E1A\u52A1, \u4EE3\u7801\u53EF\u91CD\u7528"}],"editLink":true,"footer":"ISC Licensed | Copyright \xA9 2018-present FxJS"},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"}],"relativePath":"index.md","lastUpdated":1715603494724}',p={},o=t(`

\u5FEB\u901F\u5F00\u59CB

\u5B89\u88C5 @fxjs/orm:

npm install @fxjs/orm
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"/images/cover_photo_symbol.png","heroAlt":"Logo image","heroText":" ","features":[{"title":"\u5FEB\u901F\u5F00\u59CB","details":"\u5B66\u4E60\u6210\u672C\u4F4E, \u7B80\u5355\u6613\u4E0A\u624B"},{"title":"TypeScript Powered","details":"\u6240\u6709\u6A21\u5757\u5747\u91C7\u7528 TypeScript \u5F00\u53D1, \u63D0\u4F9B\u7C7B\u578B\u6587\u4EF6"},{"title":"Monorepo","details":"\u57FA\u4E8E monorepo \u98CE\u683C\u7EC4\u7EC7\u6A21\u5757\u5305\u548C\u4E1A\u52A1, \u4EE3\u7801\u53EF\u91CD\u7528"}],"editLink":true,"footer":"ISC Licensed | Copyright \xA9 2018-present FxJS"},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"}],"relativePath":"index.md","lastUpdated":1715847568873}',p={},o=t(`

\u5FEB\u901F\u5F00\u59CB

\u5B89\u88C5 @fxjs/orm:

npm install @fxjs/orm
 

\u5728\u4F60\u7684 fibjs \u9879\u76EE\u4E2D\u5F15\u5165:

var orm = require("@fxjs/orm");
 
 var db = orm.connectSync("mysql://username:password@host/database");
diff --git a/assets/index.md.88519b9f.lean.js b/assets/index.md.b0a8583e.lean.js
similarity index 93%
rename from assets/index.md.88519b9f.lean.js
rename to assets/index.md.b0a8583e.lean.js
index b9580c3e..cb0cd2e6 100644
--- a/assets/index.md.88519b9f.lean.js
+++ b/assets/index.md.b0a8583e.lean.js
@@ -1 +1 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"/images/cover_photo_symbol.png","heroAlt":"Logo image","heroText":" ","features":[{"title":"\u5FEB\u901F\u5F00\u59CB","details":"\u5B66\u4E60\u6210\u672C\u4F4E, \u7B80\u5355\u6613\u4E0A\u624B"},{"title":"TypeScript Powered","details":"\u6240\u6709\u6A21\u5757\u5747\u91C7\u7528 TypeScript \u5F00\u53D1, \u63D0\u4F9B\u7C7B\u578B\u6587\u4EF6"},{"title":"Monorepo","details":"\u57FA\u4E8E monorepo \u98CE\u683C\u7EC4\u7EC7\u6A21\u5757\u5305\u548C\u4E1A\u52A1, \u4EE3\u7801\u53EF\u91CD\u7528"}],"editLink":true,"footer":"ISC Licensed | Copyright \xA9 2018-present FxJS"},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"}],"relativePath":"index.md","lastUpdated":1715603494724}',p={},o=t("",6),e=[o];function c(u,l,r,i,k,d){return a(),s("div",null,e)}var g=n(p,[["render",c]]);export{y as __pageData,g as default};
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"Home","description":"","frontmatter":{"home":true,"heroImage":"/images/cover_photo_symbol.png","heroAlt":"Logo image","heroText":" ","features":[{"title":"\u5FEB\u901F\u5F00\u59CB","details":"\u5B66\u4E60\u6210\u672C\u4F4E, \u7B80\u5355\u6613\u4E0A\u624B"},{"title":"TypeScript Powered","details":"\u6240\u6709\u6A21\u5757\u5747\u91C7\u7528 TypeScript \u5F00\u53D1, \u63D0\u4F9B\u7C7B\u578B\u6587\u4EF6"},{"title":"Monorepo","details":"\u57FA\u4E8E monorepo \u98CE\u683C\u7EC4\u7EC7\u6A21\u5757\u5305\u548C\u4E1A\u52A1, \u4EE3\u7801\u53EF\u91CD\u7528"}],"editLink":true,"footer":"ISC Licensed | Copyright \xA9 2018-present FxJS"},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"}],"relativePath":"index.md","lastUpdated":1715847568873}',p={},o=t("",6),e=[o];function c(u,l,r,i,k,d){return a(),s("div",null,e)}var g=n(p,[["render",c]]);export{y as __pageData,g as default};
diff --git a/assets/orm-packages_db-driver.md.1268786a.js b/assets/orm-packages_db-driver.md.f6a6f152.js
similarity index 99%
rename from assets/orm-packages_db-driver.md.1268786a.js
rename to assets/orm-packages_db-driver.md.f6a6f152.js
index df93869f..75e7eafe 100644
--- a/assets/orm-packages_db-driver.md.1268786a.js
+++ b/assets/orm-packages_db-driver.md.f6a6f152.js
@@ -1,4 +1,4 @@
-import{_ as r,z as c,A as n,I as s,O as a,V as t,X as o,T as p,D as i}from"./plugin-vue_export-helper.1f71b9e3.js";const Bn='{"title":"@fxjs/db-driver","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Driver","slug":"driver"},{"level":3,"title":"Driver.create(connection: string | object): DriverInstance","slug":"driver-create-connection-string-object-driverinstance-static"},{"level":3,"title":"Driver.formatUrl(urlObj: object): string","slug":"driver-formaturl-urlobj-object-string-static"},{"level":3,"title":"Driver.getDriver(type: string): DriverConstructor","slug":"driver-getdriver-type-string-driverconstructor-static"},{"level":3,"title":"Driver::uid","slug":"driver-uid-readonly"},{"level":3,"title":"Driver::uri","slug":"driver-uri-readonly"},{"level":3,"title":"Driver::type","slug":"driver-type"},{"level":3,"title":"Driver::config","slug":"driver-config-readonly"},{"level":3,"title":"Driver::extend_config","slug":"driver-extend-config-readonly"},{"level":3,"title":"Driver::connection","slug":"driver-connection-readonly"},{"level":3,"title":"Driver::isPool","slug":"driver-ispool-readonly"},{"level":3,"title":"Driver::isSql","slug":"driver-issql-readonly"},{"level":3,"title":"Driver::isNoSql","slug":"driver-isnosql-readonly"},{"level":3,"title":"Driver::isCommand","slug":"driver-iscommand-readonly"},{"level":3,"title":"Driver::open(): void","slug":"driver-open-void"},{"level":3,"title":"Driver::close(): void","slug":"driver-close-void"},{"level":3,"title":"Driver::reopen(): void","slug":"driver-reopen-void"},{"level":3,"title":"Driver::getConnection(): T","slug":"driver-getconnection-t"},{"level":3,"title":"Driver::connectionPool(callback: (connection: CONN_TYPE) => any): any","slug":"driver-connectionpool-callback-connection-conn-type-any-any"},{"level":3,"title":"Driver::useTrans(callback: (conn_for_trans: CONN_TYPE) => any)","slug":"driver-usetrans-callback-conn-for-trans-conn-type-any"},{"level":2,"title":"SQLDriver","slug":"sqldriver"},{"level":3,"title":"SQLDriver::switchDb(db: name)","slug":"sqldriver-switchdb-db-name"},{"level":3,"title":"SQLDriver::trans(cb: Function): boolean","slug":"sqldriver-trans-cb-function-boolean"},{"level":3,"title":"SQLDriver::execute(sql: string)","slug":"sqldriver-execute-sql-string-blocking"},{"level":2,"title":"RedisDriver","slug":"redisdriver"},{"level":3,"title":"RedisDriver::command(cmd: string, arg: any)","slug":"redisdriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"`RedisDriver::commands(cmds: Record","slug":"redisdriver-commands-cmds-record-string-any-opts-object-blocking"},{"level":2,"title":"MongoDriver","slug":"mongodriver"},{"level":3,"title":"MongoDriver::command(cmd: string, arg: any)","slug":"mongodriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"MongoDriver::commands(cmds: object, opts: object)","slug":"mongodriver-commands-cmds-object-opts-object-blocking"}],"relativePath":"orm-packages/db-driver.md","lastUpdated":1715603494724}',d={},l=o(`

@fxjs/db-driver

NPM version\xA0 NPM download\xA0 NPM download monthly

db-driver \u63D0\u4F9B\u4E86\u7EDF\u4E00\u7684\u63A5\u53E3 Driver, \u7528\u4E8E\u64CD\u4F5C\u6570\u636E\u5E93.

\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B

\u76EE\u524D db-driver \u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B\u6709:

\u6570\u636E\u5E93\u9A71\u52A8\u7C7B\u578B\u6807\u8BC6Driver \u7C7B\u578B
MySQL/MariaDBmysqlSQLDriver MySQLDriver
PostgreSQLpostgresqlPostgreSQLDriver
SQLitesqliteSQLiteDriver
RedisredisRedisDriver
MongoDBmongodbMongoDBDriver

\u5FEB\u901F\u5F00\u59CB

\u5B89\u88C5

npm install @fxjs/db-driver
+import{_ as r,z as c,A as n,I as s,O as a,V as t,X as o,T as p,D as i}from"./plugin-vue_export-helper.1f71b9e3.js";const Bn='{"title":"@fxjs/db-driver","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Driver","slug":"driver"},{"level":3,"title":"Driver.create(connection: string | object): DriverInstance","slug":"driver-create-connection-string-object-driverinstance-static"},{"level":3,"title":"Driver.formatUrl(urlObj: object): string","slug":"driver-formaturl-urlobj-object-string-static"},{"level":3,"title":"Driver.getDriver(type: string): DriverConstructor","slug":"driver-getdriver-type-string-driverconstructor-static"},{"level":3,"title":"Driver::uid","slug":"driver-uid-readonly"},{"level":3,"title":"Driver::uri","slug":"driver-uri-readonly"},{"level":3,"title":"Driver::type","slug":"driver-type"},{"level":3,"title":"Driver::config","slug":"driver-config-readonly"},{"level":3,"title":"Driver::extend_config","slug":"driver-extend-config-readonly"},{"level":3,"title":"Driver::connection","slug":"driver-connection-readonly"},{"level":3,"title":"Driver::isPool","slug":"driver-ispool-readonly"},{"level":3,"title":"Driver::isSql","slug":"driver-issql-readonly"},{"level":3,"title":"Driver::isNoSql","slug":"driver-isnosql-readonly"},{"level":3,"title":"Driver::isCommand","slug":"driver-iscommand-readonly"},{"level":3,"title":"Driver::open(): void","slug":"driver-open-void"},{"level":3,"title":"Driver::close(): void","slug":"driver-close-void"},{"level":3,"title":"Driver::reopen(): void","slug":"driver-reopen-void"},{"level":3,"title":"Driver::getConnection(): T","slug":"driver-getconnection-t"},{"level":3,"title":"Driver::connectionPool(callback: (connection: CONN_TYPE) => any): any","slug":"driver-connectionpool-callback-connection-conn-type-any-any"},{"level":3,"title":"Driver::useTrans(callback: (conn_for_trans: CONN_TYPE) => any)","slug":"driver-usetrans-callback-conn-for-trans-conn-type-any"},{"level":2,"title":"SQLDriver","slug":"sqldriver"},{"level":3,"title":"SQLDriver::switchDb(db: name)","slug":"sqldriver-switchdb-db-name"},{"level":3,"title":"SQLDriver::trans(cb: Function): boolean","slug":"sqldriver-trans-cb-function-boolean"},{"level":3,"title":"SQLDriver::execute(sql: string)","slug":"sqldriver-execute-sql-string-blocking"},{"level":2,"title":"RedisDriver","slug":"redisdriver"},{"level":3,"title":"RedisDriver::command(cmd: string, arg: any)","slug":"redisdriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"`RedisDriver::commands(cmds: Record","slug":"redisdriver-commands-cmds-record-string-any-opts-object-blocking"},{"level":2,"title":"MongoDriver","slug":"mongodriver"},{"level":3,"title":"MongoDriver::command(cmd: string, arg: any)","slug":"mongodriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"MongoDriver::commands(cmds: object, opts: object)","slug":"mongodriver-commands-cmds-object-opts-object-blocking"}],"relativePath":"orm-packages/db-driver.md","lastUpdated":1715847568873}',d={},l=o(`

@fxjs/db-driver

NPM version\xA0 NPM download\xA0 NPM download monthly

db-driver \u63D0\u4F9B\u4E86\u7EDF\u4E00\u7684\u63A5\u53E3 Driver, \u7528\u4E8E\u64CD\u4F5C\u6570\u636E\u5E93.

\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B

\u76EE\u524D db-driver \u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B\u6709:

\u6570\u636E\u5E93\u9A71\u52A8\u7C7B\u578B\u6807\u8BC6Driver \u7C7B\u578B
MySQL/MariaDBmysqlSQLDriver MySQLDriver
PostgreSQLpostgresqlPostgreSQLDriver
SQLitesqliteSQLiteDriver
RedisredisRedisDriver
MongoDBmongodbMongoDBDriver

\u5FEB\u901F\u5F00\u59CB

\u5B89\u88C5

npm install @fxjs/db-driver
 

\u5728 fibjs \u4E2D\u6784\u9020\u4E00\u4E2A\u9002\u7528\u4E8E mysql \u7684 dbdriver

const { Driver } = require('@fxjs/db-driver');
 
 // use connection string
diff --git a/assets/orm-packages_db-driver.md.1268786a.lean.js b/assets/orm-packages_db-driver.md.f6a6f152.lean.js
similarity index 99%
rename from assets/orm-packages_db-driver.md.1268786a.lean.js
rename to assets/orm-packages_db-driver.md.f6a6f152.lean.js
index 23e8f5e4..b8bbe5a8 100644
--- a/assets/orm-packages_db-driver.md.1268786a.lean.js
+++ b/assets/orm-packages_db-driver.md.f6a6f152.lean.js
@@ -1 +1 @@
-import{_ as r,z as c,A as n,I as s,O as a,V as t,X as o,T as p,D as i}from"./plugin-vue_export-helper.1f71b9e3.js";const Bn='{"title":"@fxjs/db-driver","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Driver","slug":"driver"},{"level":3,"title":"Driver.create(connection: string | object): DriverInstance","slug":"driver-create-connection-string-object-driverinstance-static"},{"level":3,"title":"Driver.formatUrl(urlObj: object): string","slug":"driver-formaturl-urlobj-object-string-static"},{"level":3,"title":"Driver.getDriver(type: string): DriverConstructor","slug":"driver-getdriver-type-string-driverconstructor-static"},{"level":3,"title":"Driver::uid","slug":"driver-uid-readonly"},{"level":3,"title":"Driver::uri","slug":"driver-uri-readonly"},{"level":3,"title":"Driver::type","slug":"driver-type"},{"level":3,"title":"Driver::config","slug":"driver-config-readonly"},{"level":3,"title":"Driver::extend_config","slug":"driver-extend-config-readonly"},{"level":3,"title":"Driver::connection","slug":"driver-connection-readonly"},{"level":3,"title":"Driver::isPool","slug":"driver-ispool-readonly"},{"level":3,"title":"Driver::isSql","slug":"driver-issql-readonly"},{"level":3,"title":"Driver::isNoSql","slug":"driver-isnosql-readonly"},{"level":3,"title":"Driver::isCommand","slug":"driver-iscommand-readonly"},{"level":3,"title":"Driver::open(): void","slug":"driver-open-void"},{"level":3,"title":"Driver::close(): void","slug":"driver-close-void"},{"level":3,"title":"Driver::reopen(): void","slug":"driver-reopen-void"},{"level":3,"title":"Driver::getConnection(): T","slug":"driver-getconnection-t"},{"level":3,"title":"Driver::connectionPool(callback: (connection: CONN_TYPE) => any): any","slug":"driver-connectionpool-callback-connection-conn-type-any-any"},{"level":3,"title":"Driver::useTrans(callback: (conn_for_trans: CONN_TYPE) => any)","slug":"driver-usetrans-callback-conn-for-trans-conn-type-any"},{"level":2,"title":"SQLDriver","slug":"sqldriver"},{"level":3,"title":"SQLDriver::switchDb(db: name)","slug":"sqldriver-switchdb-db-name"},{"level":3,"title":"SQLDriver::trans(cb: Function): boolean","slug":"sqldriver-trans-cb-function-boolean"},{"level":3,"title":"SQLDriver::execute(sql: string)","slug":"sqldriver-execute-sql-string-blocking"},{"level":2,"title":"RedisDriver","slug":"redisdriver"},{"level":3,"title":"RedisDriver::command(cmd: string, arg: any)","slug":"redisdriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"`RedisDriver::commands(cmds: Record","slug":"redisdriver-commands-cmds-record-string-any-opts-object-blocking"},{"level":2,"title":"MongoDriver","slug":"mongodriver"},{"level":3,"title":"MongoDriver::command(cmd: string, arg: any)","slug":"mongodriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"MongoDriver::commands(cmds: object, opts: object)","slug":"mongodriver-commands-cmds-object-opts-object-blocking"}],"relativePath":"orm-packages/db-driver.md","lastUpdated":1715603494724}',d={},l=o("",12),u={id:"driver-create-connection-string-object-driverinstance-static",tabindex:"-1"},v=n("code",null,"Driver.create(connection: string | object): DriverInstance",-1),k=n("a",{class:"header-anchor",href:"#driver-create-connection-string-object-driverinstance-static","aria-hidden":"true"},"#",-1),_=o("",2),h={id:"driver-formaturl-urlobj-object-string-static",tabindex:"-1"},g=n("code",null,"Driver.formatUrl(urlObj: object): string",-1),m=n("a",{class:"header-anchor",href:"#driver-formaturl-urlobj-object-string-static","aria-hidden":"true"},"#",-1),b=o("",2),y={id:"driver-getdriver-type-string-driverconstructor-static",tabindex:"-1"},D=n("code",null,"Driver.getDriver(type: string): DriverConstructor",-1),f=n("a",{class:"header-anchor",href:"#driver-getdriver-type-string-driverconstructor-static","aria-hidden":"true"},"#",-1),q=o("",4),S={id:"driver-uid-readonly",tabindex:"-1"},T=n("code",null,"Driver::uid",-1),x=n("a",{class:"header-anchor",href:"#driver-uid-readonly","aria-hidden":"true"},"#",-1),w=n("p",null,"Driver \u5B9E\u4F8B\u521B\u5EFA\u65F6, \u751F\u6210\u7684\u552F\u4E00 id. \u4E0D\u53EF\u66F4\u6539, \u4E00\u822C\u7528\u4E8E\u5F00\u53D1\u8005\u5185\u90E8 debug",-1),j={id:"driver-uri-readonly",tabindex:"-1"},C=n("code",null,"Driver::uri",-1),A=n("a",{class:"header-anchor",href:"#driver-uri-readonly","aria-hidden":"true"},"#",-1),L=n("p",null,"\u5F53\u524D Driver \u7ECF\u8FC7\u683C\u5F0F\u5316\u7684\u8FDE\u63A5 uri.",-1),P=n("p",null,[n("strong",null,"\u6CE8\u610F"),s(" \u683C\u5F0F\u5316\u540E\u7684 uri \u66F4\u89C4\u8303, \u4E0D\u4E00\u5B9A\u7B49\u4E8E\u4F20\u5165\u7684 uri.")],-1),Q=n("h3",{id:"driver-type",tabindex:"-1"},[n("code",null,"Driver::type"),s(),n("a",{class:"header-anchor",href:"#driver-type","aria-hidden":"true"},"#")],-1),E=n("p",null,[s("\u5F53\u524D Driver \u7684\u9A71\u52A8\u7C7B\u578B, \u53C2\u8003"),n("a",{href:"#%E6%94%AF%E6%8C%81%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B1%BB%E5%9E%8B"},"\u9A71\u52A8\u7C7B\u578B\u6807\u8BC6")],-1),N={id:"driver-config-readonly",tabindex:"-1"},I=n("code",null,"Driver::config",-1),R=n("a",{class:"header-anchor",href:"#driver-config-readonly","aria-hidden":"true"},"#",-1),V=n("p",null,[s("\u5F53\u524D Driver \u7684\u914D\u7F6E, \u8BE5\u914D\u7F6E\u662F\u5BF9 "),n("code",null,"new Driver(options)"),s(" \u4E2D "),n("code",null,"options"),s(" \u89E3\u6790\u540E\u7684\u5BF9\u8C61\u7684"),n("strong",null,"\u5FEB\u7167"),s(".")],-1),B=n("p",null,[n("strong",null,"P.S."),s(" \u8FD9\u610F\u5473\u7740\u4F60\u5BF9 config \u4E0A\u5B57\u6BB5\u7684\u66F4\u6539\u662F\u6CA1\u6709\u610F\u4E49\u7684.")],-1),M={id:"driver-extend-config-readonly",tabindex:"-1"},Y=n("code",null,"Driver::extend_config",-1),O=n("a",{class:"header-anchor",href:"#driver-extend-config-readonly","aria-hidden":"true"},"#",-1),U=o("",5),F={id:"driver-connection-readonly",tabindex:"-1"},$=n("code",null,"Driver::connection",-1),X=n("a",{class:"header-anchor",href:"#driver-connection-readonly","aria-hidden":"true"},"#",-1),z=o("",2),G={id:"driver-ispool-readonly",tabindex:"-1"},H=n("code",null,"Driver::isPool",-1),J=n("a",{class:"header-anchor",href:"#driver-ispool-readonly","aria-hidden":"true"},"#",-1),K=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u4F7F\u7528\u8FDE\u63A5\u6C60. \u5176\u503C\u53D6\u51B3\u4E8E "),n("code",null,"Driver.extend_config.pool"),s(" \u7684\u503C.")],-1),W={id:"driver-issql-readonly",tabindex:"-1"},Z=n("code",null,"Driver::isSql",-1),nn=n("a",{class:"header-anchor",href:"#driver-issql-readonly","aria-hidden":"true"},"#",-1),sn=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u5C5E\u4E8E SQL \u6570\u636E\u5E93\u7684\u5BA2\u6237\u7AEF, \u5982 "),n("code",null,"sqlite"),s(", "),n("code",null,"mysql"),s(", "),n("code",null,"postgresql"),s(".")],-1),en={id:"driver-isnosql-readonly",tabindex:"-1"},an=n("code",null,"Driver::isNoSql",-1),tn=n("a",{class:"header-anchor",href:"#driver-isnosql-readonly","aria-hidden":"true"},"#",-1),on=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u5C5E\u4E8E NoSQL \u6570\u636E\u5E93\u7684\u5BA2\u6237\u7AEF, \u5982 "),n("code",null,"mongodb"),s(".")],-1),rn={id:"driver-iscommand-readonly",tabindex:"-1"},cn=n("code",null,"Driver::isCommand",-1),pn=n("a",{class:"header-anchor",href:"#driver-iscommand-readonly","aria-hidden":"true"},"#",-1),dn=o("",28),ln={id:"sqldriver-execute-sql-string-blocking",tabindex:"-1"},un=n("code",null,"SQLDriver::execute(sql: string)",-1),vn=n("a",{class:"header-anchor",href:"#sqldriver-execute-sql-string-blocking","aria-hidden":"true"},"#",-1),kn=o("",4),_n={id:"redisdriver-command-cmd-string-arg-any-blocking",tabindex:"-1"},hn=n("code",null,"RedisDriver::command(cmd: string, arg: any)",-1),gn=n("a",{class:"header-anchor",href:"#redisdriver-command-cmd-string-arg-any-blocking","aria-hidden":"true"},"#",-1),mn=n("p",null,"\u6267\u884C\u4E00\u4E2A redis cmd(cmd \u53C2\u6570\u4E3A arg), \u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C.",-1),bn={id:"redisdriver-commands-cmds-record-string-any-opts-object-blocking",tabindex:"-1"},yn=n("code",null,"RedisDriver::commands(cmds: Record, opts: object)",-1),Dn=n("a",{class:"header-anchor",href:"#redisdriver-commands-cmds-record-string-any-opts-object-blocking","aria-hidden":"true"},"#",-1),fn=o("",5),qn={id:"mongodriver-command-cmd-string-arg-any-blocking",tabindex:"-1"},Sn=n("code",null,"MongoDriver::command(cmd: string, arg: any)",-1),Tn=n("a",{class:"header-anchor",href:"#mongodriver-command-cmd-string-arg-any-blocking","aria-hidden":"true"},"#",-1),xn=n("p",null,"\u6267\u884C\u4E00\u4E2A mongodb cmd(cmd \u53C2\u6570\u4E3A arg), \u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C.",-1),wn={id:"mongodriver-commands-cmds-object-opts-object-blocking",tabindex:"-1"},jn=n("code",null,"MongoDriver::commands(cmds: object, opts: object)",-1),Cn=n("a",{class:"header-anchor",href:"#mongodriver-commands-cmds-object-opts-object-blocking","aria-hidden":"true"},"#",-1),An=o("",3);function Ln(Pn,Qn,En,Nn,In,Rn){const e=p("Badge");return i(),c("div",null,[l,n("h3",u,[v,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),k]),_,n("h3",h,[g,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),m]),b,n("h3",y,[D,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),f]),q,n("h3",S,[T,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),x]),w,n("h3",j,[C,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),A]),L,P,Q,E,n("h3",N,[I,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),R]),V,B,n("h3",M,[Y,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),O]),U,n("h3",F,[$,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),X]),z,n("h3",G,[H,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),J]),K,n("h3",W,[Z,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),nn]),sn,n("h3",en,[an,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),tn]),on,n("h3",rn,[cn,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),pn]),dn,n("h3",ln,[un,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),vn]),kn,n("h3",_n,[hn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),gn]),mn,n("h3",bn,[yn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Dn]),fn,n("h3",qn,[Sn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Tn]),xn,n("h3",wn,[jn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Cn]),An])}var Mn=r(d,[["render",Ln]]);export{Bn as __pageData,Mn as default};
+import{_ as r,z as c,A as n,I as s,O as a,V as t,X as o,T as p,D as i}from"./plugin-vue_export-helper.1f71b9e3.js";const Bn='{"title":"@fxjs/db-driver","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u652F\u6301\u7684\u6570\u636E\u5E93\u7C7B\u578B"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Driver","slug":"driver"},{"level":3,"title":"Driver.create(connection: string | object): DriverInstance","slug":"driver-create-connection-string-object-driverinstance-static"},{"level":3,"title":"Driver.formatUrl(urlObj: object): string","slug":"driver-formaturl-urlobj-object-string-static"},{"level":3,"title":"Driver.getDriver(type: string): DriverConstructor","slug":"driver-getdriver-type-string-driverconstructor-static"},{"level":3,"title":"Driver::uid","slug":"driver-uid-readonly"},{"level":3,"title":"Driver::uri","slug":"driver-uri-readonly"},{"level":3,"title":"Driver::type","slug":"driver-type"},{"level":3,"title":"Driver::config","slug":"driver-config-readonly"},{"level":3,"title":"Driver::extend_config","slug":"driver-extend-config-readonly"},{"level":3,"title":"Driver::connection","slug":"driver-connection-readonly"},{"level":3,"title":"Driver::isPool","slug":"driver-ispool-readonly"},{"level":3,"title":"Driver::isSql","slug":"driver-issql-readonly"},{"level":3,"title":"Driver::isNoSql","slug":"driver-isnosql-readonly"},{"level":3,"title":"Driver::isCommand","slug":"driver-iscommand-readonly"},{"level":3,"title":"Driver::open(): void","slug":"driver-open-void"},{"level":3,"title":"Driver::close(): void","slug":"driver-close-void"},{"level":3,"title":"Driver::reopen(): void","slug":"driver-reopen-void"},{"level":3,"title":"Driver::getConnection(): T","slug":"driver-getconnection-t"},{"level":3,"title":"Driver::connectionPool(callback: (connection: CONN_TYPE) => any): any","slug":"driver-connectionpool-callback-connection-conn-type-any-any"},{"level":3,"title":"Driver::useTrans(callback: (conn_for_trans: CONN_TYPE) => any)","slug":"driver-usetrans-callback-conn-for-trans-conn-type-any"},{"level":2,"title":"SQLDriver","slug":"sqldriver"},{"level":3,"title":"SQLDriver::switchDb(db: name)","slug":"sqldriver-switchdb-db-name"},{"level":3,"title":"SQLDriver::trans(cb: Function): boolean","slug":"sqldriver-trans-cb-function-boolean"},{"level":3,"title":"SQLDriver::execute(sql: string)","slug":"sqldriver-execute-sql-string-blocking"},{"level":2,"title":"RedisDriver","slug":"redisdriver"},{"level":3,"title":"RedisDriver::command(cmd: string, arg: any)","slug":"redisdriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"`RedisDriver::commands(cmds: Record","slug":"redisdriver-commands-cmds-record-string-any-opts-object-blocking"},{"level":2,"title":"MongoDriver","slug":"mongodriver"},{"level":3,"title":"MongoDriver::command(cmd: string, arg: any)","slug":"mongodriver-command-cmd-string-arg-any-blocking"},{"level":3,"title":"MongoDriver::commands(cmds: object, opts: object)","slug":"mongodriver-commands-cmds-object-opts-object-blocking"}],"relativePath":"orm-packages/db-driver.md","lastUpdated":1715847568873}',d={},l=o("",12),u={id:"driver-create-connection-string-object-driverinstance-static",tabindex:"-1"},v=n("code",null,"Driver.create(connection: string | object): DriverInstance",-1),k=n("a",{class:"header-anchor",href:"#driver-create-connection-string-object-driverinstance-static","aria-hidden":"true"},"#",-1),_=o("",2),h={id:"driver-formaturl-urlobj-object-string-static",tabindex:"-1"},g=n("code",null,"Driver.formatUrl(urlObj: object): string",-1),m=n("a",{class:"header-anchor",href:"#driver-formaturl-urlobj-object-string-static","aria-hidden":"true"},"#",-1),b=o("",2),y={id:"driver-getdriver-type-string-driverconstructor-static",tabindex:"-1"},D=n("code",null,"Driver.getDriver(type: string): DriverConstructor",-1),f=n("a",{class:"header-anchor",href:"#driver-getdriver-type-string-driverconstructor-static","aria-hidden":"true"},"#",-1),q=o("",4),S={id:"driver-uid-readonly",tabindex:"-1"},T=n("code",null,"Driver::uid",-1),x=n("a",{class:"header-anchor",href:"#driver-uid-readonly","aria-hidden":"true"},"#",-1),w=n("p",null,"Driver \u5B9E\u4F8B\u521B\u5EFA\u65F6, \u751F\u6210\u7684\u552F\u4E00 id. \u4E0D\u53EF\u66F4\u6539, \u4E00\u822C\u7528\u4E8E\u5F00\u53D1\u8005\u5185\u90E8 debug",-1),j={id:"driver-uri-readonly",tabindex:"-1"},C=n("code",null,"Driver::uri",-1),A=n("a",{class:"header-anchor",href:"#driver-uri-readonly","aria-hidden":"true"},"#",-1),L=n("p",null,"\u5F53\u524D Driver \u7ECF\u8FC7\u683C\u5F0F\u5316\u7684\u8FDE\u63A5 uri.",-1),P=n("p",null,[n("strong",null,"\u6CE8\u610F"),s(" \u683C\u5F0F\u5316\u540E\u7684 uri \u66F4\u89C4\u8303, \u4E0D\u4E00\u5B9A\u7B49\u4E8E\u4F20\u5165\u7684 uri.")],-1),Q=n("h3",{id:"driver-type",tabindex:"-1"},[n("code",null,"Driver::type"),s(),n("a",{class:"header-anchor",href:"#driver-type","aria-hidden":"true"},"#")],-1),E=n("p",null,[s("\u5F53\u524D Driver \u7684\u9A71\u52A8\u7C7B\u578B, \u53C2\u8003"),n("a",{href:"#%E6%94%AF%E6%8C%81%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B1%BB%E5%9E%8B"},"\u9A71\u52A8\u7C7B\u578B\u6807\u8BC6")],-1),N={id:"driver-config-readonly",tabindex:"-1"},I=n("code",null,"Driver::config",-1),R=n("a",{class:"header-anchor",href:"#driver-config-readonly","aria-hidden":"true"},"#",-1),V=n("p",null,[s("\u5F53\u524D Driver \u7684\u914D\u7F6E, \u8BE5\u914D\u7F6E\u662F\u5BF9 "),n("code",null,"new Driver(options)"),s(" \u4E2D "),n("code",null,"options"),s(" \u89E3\u6790\u540E\u7684\u5BF9\u8C61\u7684"),n("strong",null,"\u5FEB\u7167"),s(".")],-1),B=n("p",null,[n("strong",null,"P.S."),s(" \u8FD9\u610F\u5473\u7740\u4F60\u5BF9 config \u4E0A\u5B57\u6BB5\u7684\u66F4\u6539\u662F\u6CA1\u6709\u610F\u4E49\u7684.")],-1),M={id:"driver-extend-config-readonly",tabindex:"-1"},Y=n("code",null,"Driver::extend_config",-1),O=n("a",{class:"header-anchor",href:"#driver-extend-config-readonly","aria-hidden":"true"},"#",-1),U=o("",5),F={id:"driver-connection-readonly",tabindex:"-1"},$=n("code",null,"Driver::connection",-1),X=n("a",{class:"header-anchor",href:"#driver-connection-readonly","aria-hidden":"true"},"#",-1),z=o("",2),G={id:"driver-ispool-readonly",tabindex:"-1"},H=n("code",null,"Driver::isPool",-1),J=n("a",{class:"header-anchor",href:"#driver-ispool-readonly","aria-hidden":"true"},"#",-1),K=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u4F7F\u7528\u8FDE\u63A5\u6C60. \u5176\u503C\u53D6\u51B3\u4E8E "),n("code",null,"Driver.extend_config.pool"),s(" \u7684\u503C.")],-1),W={id:"driver-issql-readonly",tabindex:"-1"},Z=n("code",null,"Driver::isSql",-1),nn=n("a",{class:"header-anchor",href:"#driver-issql-readonly","aria-hidden":"true"},"#",-1),sn=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u5C5E\u4E8E SQL \u6570\u636E\u5E93\u7684\u5BA2\u6237\u7AEF, \u5982 "),n("code",null,"sqlite"),s(", "),n("code",null,"mysql"),s(", "),n("code",null,"postgresql"),s(".")],-1),en={id:"driver-isnosql-readonly",tabindex:"-1"},an=n("code",null,"Driver::isNoSql",-1),tn=n("a",{class:"header-anchor",href:"#driver-isnosql-readonly","aria-hidden":"true"},"#",-1),on=n("p",null,[s("\u5F53\u524D driver \u662F\u5426\u5C5E\u4E8E NoSQL \u6570\u636E\u5E93\u7684\u5BA2\u6237\u7AEF, \u5982 "),n("code",null,"mongodb"),s(".")],-1),rn={id:"driver-iscommand-readonly",tabindex:"-1"},cn=n("code",null,"Driver::isCommand",-1),pn=n("a",{class:"header-anchor",href:"#driver-iscommand-readonly","aria-hidden":"true"},"#",-1),dn=o("",28),ln={id:"sqldriver-execute-sql-string-blocking",tabindex:"-1"},un=n("code",null,"SQLDriver::execute(sql: string)",-1),vn=n("a",{class:"header-anchor",href:"#sqldriver-execute-sql-string-blocking","aria-hidden":"true"},"#",-1),kn=o("",4),_n={id:"redisdriver-command-cmd-string-arg-any-blocking",tabindex:"-1"},hn=n("code",null,"RedisDriver::command(cmd: string, arg: any)",-1),gn=n("a",{class:"header-anchor",href:"#redisdriver-command-cmd-string-arg-any-blocking","aria-hidden":"true"},"#",-1),mn=n("p",null,"\u6267\u884C\u4E00\u4E2A redis cmd(cmd \u53C2\u6570\u4E3A arg), \u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C.",-1),bn={id:"redisdriver-commands-cmds-record-string-any-opts-object-blocking",tabindex:"-1"},yn=n("code",null,"RedisDriver::commands(cmds: Record, opts: object)",-1),Dn=n("a",{class:"header-anchor",href:"#redisdriver-commands-cmds-record-string-any-opts-object-blocking","aria-hidden":"true"},"#",-1),fn=o("",5),qn={id:"mongodriver-command-cmd-string-arg-any-blocking",tabindex:"-1"},Sn=n("code",null,"MongoDriver::command(cmd: string, arg: any)",-1),Tn=n("a",{class:"header-anchor",href:"#mongodriver-command-cmd-string-arg-any-blocking","aria-hidden":"true"},"#",-1),xn=n("p",null,"\u6267\u884C\u4E00\u4E2A mongodb cmd(cmd \u53C2\u6570\u4E3A arg), \u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C.",-1),wn={id:"mongodriver-commands-cmds-object-opts-object-blocking",tabindex:"-1"},jn=n("code",null,"MongoDriver::commands(cmds: object, opts: object)",-1),Cn=n("a",{class:"header-anchor",href:"#mongodriver-commands-cmds-object-opts-object-blocking","aria-hidden":"true"},"#",-1),An=o("",3);function Ln(Pn,Qn,En,Nn,In,Rn){const e=p("Badge");return i(),c("div",null,[l,n("h3",u,[v,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),k]),_,n("h3",h,[g,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),m]),b,n("h3",y,[D,s(),a(e,{type:"info"},{default:t(()=>[s("static")]),_:1}),s(),f]),q,n("h3",S,[T,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),x]),w,n("h3",j,[C,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),A]),L,P,Q,E,n("h3",N,[I,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),R]),V,B,n("h3",M,[Y,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),O]),U,n("h3",F,[$,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),X]),z,n("h3",G,[H,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),J]),K,n("h3",W,[Z,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),nn]),sn,n("h3",en,[an,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),tn]),on,n("h3",rn,[cn,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),pn]),dn,n("h3",ln,[un,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),vn]),kn,n("h3",_n,[hn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),gn]),mn,n("h3",bn,[yn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Dn]),fn,n("h3",qn,[Sn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Tn]),xn,n("h3",wn,[jn,s(),a(e,{type:"warning"},{default:t(()=>[s("blocking")]),_:1}),s(),Cn]),An])}var Mn=r(d,[["render",Ln]]);export{Bn as __pageData,Mn as default};
diff --git a/assets/orm-packages_index.md.44cbfe8a.js b/assets/orm-packages_index.md.16084e8f.js
similarity index 97%
rename from assets/orm-packages_index.md.44cbfe8a.js
rename to assets/orm-packages_index.md.16084e8f.js
index 6b538533..f5ecfc0d 100644
--- a/assets/orm-packages_index.md.44cbfe8a.js
+++ b/assets/orm-packages_index.md.16084e8f.js
@@ -1 +1 @@
-import{_ as e,z as r,D as a,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"Packages","description":"","frontmatter":{},"headers":[],"relativePath":"orm-packages/index.md","lastUpdated":1715603494724}',t={},s=o('

Packages

@fxjs/orm \u7684\u4ED3\u5E93\u57FA\u4E8E mono repo \u7684\u98CE\u683C\u7BA1\u7406, \u6240\u6709\u7684\u5305\u53EF\u4EE5\u5728 https://github.com/fxjs-modules/orm/tree/master/packages \u4E2D\u67E5\u770B\u5230. \u672C\u6587\u7B80\u5355\u4ECB\u7ECD\u4ECB\u7ECD\u5176\u4E2D\u4F5C\u4E3A orm \u57FA\u77F3\u7684\u6BD4\u8F83\u91CD\u8981\u7684\u5305:

  • @fxjs/orm-core \u6838\u5FC3\u51FD\u6570\u5E93, \u63D0\u4F9B\u4E86\u4E00\u4E9B\u7528\u4E8E\u5904\u7406 fibjs \u4E2D blocking/non-blocking \u98CE\u683C\u8F6C\u5316\u7684 utils \u65B9\u6CD5, \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/orm-property \u63D0\u4F9B\u4E86\u5BF9\u6570\u636E\u5E93\u8868\u4E2D\u7684**\u5217(Column)**\u7684\u5EFA\u6A21\u624B\u6BB5, \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/db-driver \u9002\u914D\u4E86\u4E0D\u540C\u7C7B\u578B database \u7684 driver, \u652F\u6301 SQL/NoSQL/Redis \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/knex \u4E3A fibjs \u96C6\u6210\u597D\u7528\u7684 sql generator \u5E93. \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/sql-query \u7528\u4E8E\u751F\u6210\u53EF\u5B8C\u6210\u7279\u5B9A\u64CD\u4F5C\u7684 query sql. \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/sql-ddl-sync \u9762\u5411 sql \u6570\u636E\u5E93\u8868\u7684 ddl \u5EFA\u6A21\u5DE5\u5177, \u652F\u6301\u540C\u6B65\u5B9A\u4E49\u5230\u6570\u636E\u5E93. \u53C2\u8003 \u8FD9\u91CC
',3),n=[s];function l(c,d,p,f,m,h){return a(),r("div",null,n)}var g=e(t,[["render",l]]);export{_ as __pageData,g as default}; +import{_ as e,z as r,D as a,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"Packages","description":"","frontmatter":{},"headers":[],"relativePath":"orm-packages/index.md","lastUpdated":1715847568873}',t={},s=o('

Packages

@fxjs/orm \u7684\u4ED3\u5E93\u57FA\u4E8E mono repo \u7684\u98CE\u683C\u7BA1\u7406, \u6240\u6709\u7684\u5305\u53EF\u4EE5\u5728 https://github.com/fxjs-modules/orm/tree/master/packages \u4E2D\u67E5\u770B\u5230. \u672C\u6587\u7B80\u5355\u4ECB\u7ECD\u4ECB\u7ECD\u5176\u4E2D\u4F5C\u4E3A orm \u57FA\u77F3\u7684\u6BD4\u8F83\u91CD\u8981\u7684\u5305:

  • @fxjs/orm-core \u6838\u5FC3\u51FD\u6570\u5E93, \u63D0\u4F9B\u4E86\u4E00\u4E9B\u7528\u4E8E\u5904\u7406 fibjs \u4E2D blocking/non-blocking \u98CE\u683C\u8F6C\u5316\u7684 utils \u65B9\u6CD5, \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/orm-property \u63D0\u4F9B\u4E86\u5BF9\u6570\u636E\u5E93\u8868\u4E2D\u7684**\u5217(Column)**\u7684\u5EFA\u6A21\u624B\u6BB5, \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/db-driver \u9002\u914D\u4E86\u4E0D\u540C\u7C7B\u578B database \u7684 driver, \u652F\u6301 SQL/NoSQL/Redis \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/knex \u4E3A fibjs \u96C6\u6210\u597D\u7528\u7684 sql generator \u5E93. \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/sql-query \u7528\u4E8E\u751F\u6210\u53EF\u5B8C\u6210\u7279\u5B9A\u64CD\u4F5C\u7684 query sql. \u53C2\u8003 \u8FD9\u91CC
  • @fxjs/sql-ddl-sync \u9762\u5411 sql \u6570\u636E\u5E93\u8868\u7684 ddl \u5EFA\u6A21\u5DE5\u5177, \u652F\u6301\u540C\u6B65\u5B9A\u4E49\u5230\u6570\u636E\u5E93. \u53C2\u8003 \u8FD9\u91CC
',3),n=[s];function l(c,d,p,f,m,h){return a(),r("div",null,n)}var g=e(t,[["render",l]]);export{_ as __pageData,g as default}; diff --git a/assets/orm-packages_index.md.44cbfe8a.lean.js b/assets/orm-packages_index.md.16084e8f.lean.js similarity index 82% rename from assets/orm-packages_index.md.44cbfe8a.lean.js rename to assets/orm-packages_index.md.16084e8f.lean.js index 75b5b3c4..81e557c2 100644 --- a/assets/orm-packages_index.md.44cbfe8a.lean.js +++ b/assets/orm-packages_index.md.16084e8f.lean.js @@ -1 +1 @@ -import{_ as e,z as r,D as a,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"Packages","description":"","frontmatter":{},"headers":[],"relativePath":"orm-packages/index.md","lastUpdated":1715603494724}',t={},s=o("",3),n=[s];function l(c,d,p,f,m,h){return a(),r("div",null,n)}var g=e(t,[["render",l]]);export{_ as __pageData,g as default}; +import{_ as e,z as r,D as a,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"Packages","description":"","frontmatter":{},"headers":[],"relativePath":"orm-packages/index.md","lastUpdated":1715847568873}',t={},s=o("",3),n=[s];function l(c,d,p,f,m,h){return a(),r("div",null,n)}var g=e(t,[["render",l]]);export{_ as __pageData,g as default}; diff --git a/assets/orm-packages_knex.md.590518ef.js b/assets/orm-packages_knex.md.12f55c4f.js similarity index 98% rename from assets/orm-packages_knex.md.590518ef.js rename to assets/orm-packages_knex.md.12f55c4f.js index 7e077d6f..7603fc60 100644 --- a/assets/orm-packages_knex.md.590518ef.js +++ b/assets/orm-packages_knex.md.12f55c4f.js @@ -1,4 +1,4 @@ -import{_ as n,z as s,D as a,X as e}from"./plugin-vue_export-helper.1f71b9e3.js";const g='{"title":"@fxjs/knex","description":"","frontmatter":{},"headers":[{"level":2,"title":"Sample","slug":"sample"}],"relativePath":"orm-packages/knex.md","lastUpdated":1715603494724}',t={},p=e(`

@fxjs/knex

NPM version\xA0 NPM download\xA0 NPM download monthly

knex.js \u662F node.js \u751F\u6001\u4E2D\u70ED\u95E8\u7684 sql generator \u5E93. \u53EF\u4EE5\u901A\u8FC7\u8BED\u4E49\u5316\u7684 API \u751F\u6210 sql \u8BED\u53E5.

@fxjs/knex \u662F\u5BF9 knex.js \u7684\u79FB\u690D. \u57FA\u4E8E fibjs \u7684\u6C99\u76D2\u673A\u5236, \u6211\u4EEC\u5C06 knex.js 2.3.0 \u7684\u80FD\u529B\u5F15\u5165\u5230\u4E86 fibjs \u4E2D.

Sample

var FibKnex  = require("@fxjs/knex");
+import{_ as n,z as s,D as a,X as e}from"./plugin-vue_export-helper.1f71b9e3.js";const g='{"title":"@fxjs/knex","description":"","frontmatter":{},"headers":[{"level":2,"title":"Sample","slug":"sample"}],"relativePath":"orm-packages/knex.md","lastUpdated":1715847568873}',t={},p=e(`

@fxjs/knex

NPM version\xA0 NPM download\xA0 NPM download monthly

knex.js \u662F node.js \u751F\u6001\u4E2D\u70ED\u95E8\u7684 sql generator \u5E93. \u53EF\u4EE5\u901A\u8FC7\u8BED\u4E49\u5316\u7684 API \u751F\u6210 sql \u8BED\u53E5.

@fxjs/knex \u662F\u5BF9 knex.js \u7684\u79FB\u690D. \u57FA\u4E8E fibjs \u7684\u6C99\u76D2\u673A\u5236, \u6211\u4EEC\u5C06 knex.js 2.3.0 \u7684\u80FD\u529B\u5F15\u5165\u5230\u4E86 fibjs \u4E2D.

Sample

var FibKnex  = require("@fxjs/knex");
 
 function getFibKnexInstance (driverType) {
     switch (driverType) {
diff --git a/assets/orm-packages_knex.md.590518ef.lean.js b/assets/orm-packages_knex.md.12f55c4f.lean.js
similarity index 84%
rename from assets/orm-packages_knex.md.590518ef.lean.js
rename to assets/orm-packages_knex.md.12f55c4f.lean.js
index 81dc027a..946cb0d5 100644
--- a/assets/orm-packages_knex.md.590518ef.lean.js
+++ b/assets/orm-packages_knex.md.12f55c4f.lean.js
@@ -1 +1 @@
-import{_ as n,z as s,D as a,X as e}from"./plugin-vue_export-helper.1f71b9e3.js";const g='{"title":"@fxjs/knex","description":"","frontmatter":{},"headers":[{"level":2,"title":"Sample","slug":"sample"}],"relativePath":"orm-packages/knex.md","lastUpdated":1715603494724}',t={},p=e("",7),o=[p];function c(r,l,k,u,i,d){return a(),s("div",null,o)}var m=n(t,[["render",c]]);export{g as __pageData,m as default};
+import{_ as n,z as s,D as a,X as e}from"./plugin-vue_export-helper.1f71b9e3.js";const g='{"title":"@fxjs/knex","description":"","frontmatter":{},"headers":[{"level":2,"title":"Sample","slug":"sample"}],"relativePath":"orm-packages/knex.md","lastUpdated":1715847568873}',t={},p=e("",7),o=[p];function c(r,l,k,u,i,d){return a(),s("div",null,o)}var m=n(t,[["render",c]]);export{g as __pageData,m as default};
diff --git a/assets/orm-packages_orm-core.md.cc4e7362.js b/assets/orm-packages_orm-core.md.99e18458.js
similarity index 99%
rename from assets/orm-packages_orm-core.md.cc4e7362.js
rename to assets/orm-packages_orm-core.md.99e18458.js
index 6ab768ff..7f2e4ba2 100644
--- a/assets/orm-packages_orm-core.md.cc4e7362.js
+++ b/assets/orm-packages_orm-core.md.99e18458.js
@@ -1,4 +1,4 @@
-import{_ as n,z as a,D as s,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"@fxjs/orm-core","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u9519\u8BEF\u5904\u7406","slug":"\u9519\u8BEF\u5904\u7406"},{"level":3,"title":"catchBlocking","slug":"catchblocking"},{"level":3,"title":"takeAwayResult","slug":"takeawayresult"}],"relativePath":"orm-packages/orm-core.md","lastUpdated":1715603494724}',t={},e=o(`

@fxjs/orm-core

NPM version\xA0 NPM download\xA0 NPM download monthly

\u9519\u8BEF\u5904\u7406

orm core \u63D0\u4F9B\u4E86\u4E00\u4E9B\u7528\u4E8E\u5904\u7406 fibjs \u4E2D blocking/non-blocking API \u4E0B\u9519\u8BEF\u7684 utils

  • catchBlocking / Utils.exposeErrAndResultFromSyncMethod
  • takeAwayResult / Utils.throwErrOrCallabckErrResult

\u5176\u4F7F\u7528\u573A\u666F\u53EF\u4EE5\u53C2\u8003\u5176\u6D4B\u8BD5\u7528\u4F8B,

\u5728 orm \u4E2D, blocking \u6216 non-blocking \u98CE\u683C\u6267\u884C\u51FD\u6570\u90FD\u53EF\u80FD\u5B58\u5728\u9519\u8BEF:

// blocking-style
+import{_ as n,z as a,D as s,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"@fxjs/orm-core","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u9519\u8BEF\u5904\u7406","slug":"\u9519\u8BEF\u5904\u7406"},{"level":3,"title":"catchBlocking","slug":"catchblocking"},{"level":3,"title":"takeAwayResult","slug":"takeawayresult"}],"relativePath":"orm-packages/orm-core.md","lastUpdated":1715847568873}',t={},e=o(`

@fxjs/orm-core

NPM version\xA0 NPM download\xA0 NPM download monthly

\u9519\u8BEF\u5904\u7406

orm core \u63D0\u4F9B\u4E86\u4E00\u4E9B\u7528\u4E8E\u5904\u7406 fibjs \u4E2D blocking/non-blocking API \u4E0B\u9519\u8BEF\u7684 utils

  • catchBlocking / Utils.exposeErrAndResultFromSyncMethod
  • takeAwayResult / Utils.throwErrOrCallabckErrResult

\u5176\u4F7F\u7528\u573A\u666F\u53EF\u4EE5\u53C2\u8003\u5176\u6D4B\u8BD5\u7528\u4F8B,

\u5728 orm \u4E2D, blocking \u6216 non-blocking \u98CE\u683C\u6267\u884C\u51FD\u6570\u90FD\u53EF\u80FD\u5B58\u5728\u9519\u8BEF:

// blocking-style
 try {
     result = orm.connect(uri)
 } catch (error) {}
diff --git a/assets/orm-packages_orm-core.md.cc4e7362.lean.js b/assets/orm-packages_orm-core.md.99e18458.lean.js
similarity index 88%
rename from assets/orm-packages_orm-core.md.cc4e7362.lean.js
rename to assets/orm-packages_orm-core.md.99e18458.lean.js
index de561fa5..ebe8c438 100644
--- a/assets/orm-packages_orm-core.md.cc4e7362.lean.js
+++ b/assets/orm-packages_orm-core.md.99e18458.lean.js
@@ -1 +1 @@
-import{_ as n,z as a,D as s,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"@fxjs/orm-core","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u9519\u8BEF\u5904\u7406","slug":"\u9519\u8BEF\u5904\u7406"},{"level":3,"title":"catchBlocking","slug":"catchblocking"},{"level":3,"title":"takeAwayResult","slug":"takeawayresult"}],"relativePath":"orm-packages/orm-core.md","lastUpdated":1715603494724}',t={},e=o("",20),p=[e];function c(r,l,i,k,u,d){return s(),a("div",null,p)}var m=n(t,[["render",c]]);export{h as __pageData,m as default};
+import{_ as n,z as a,D as s,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"@fxjs/orm-core","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u9519\u8BEF\u5904\u7406","slug":"\u9519\u8BEF\u5904\u7406"},{"level":3,"title":"catchBlocking","slug":"catchblocking"},{"level":3,"title":"takeAwayResult","slug":"takeawayresult"}],"relativePath":"orm-packages/orm-core.md","lastUpdated":1715847568873}',t={},e=o("",20),p=[e];function c(r,l,i,k,u,d){return s(),a("div",null,p)}var m=n(t,[["render",c]]);export{h as __pageData,m as default};
diff --git a/assets/orm-packages_orm-property.md.2e1faee8.js b/assets/orm-packages_orm-property.md.58648a54.js
similarity index 99%
rename from assets/orm-packages_orm-property.md.2e1faee8.js
rename to assets/orm-packages_orm-property.md.58648a54.js
index 24771f8d..c62b1ef6 100644
--- a/assets/orm-packages_orm-property.md.2e1faee8.js
+++ b/assets/orm-packages_orm-property.md.58648a54.js
@@ -1 +1 @@
-import{_ as t,z as d,D as e,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const u='{"title":"@fxjs/orm-property","description":"","frontmatter":{},"headers":[{"level":2,"title":"Property meta","slug":"property-meta"},{"level":2,"title":"type","slug":"type"},{"level":2,"title":"Property \u7C7B\u578B","slug":"property-\u7C7B\u578B"},{"level":3,"title":"\u6587\u672C text","slug":"\u6587\u672C-text"},{"level":3,"title":"\u6574\u6570 integer","slug":"\u6574\u6570-integer"},{"level":3,"title":"\u6D6E\u70B9\u6570 number","slug":"\u6D6E\u70B9\u6570-number"},{"level":3,"title":"\u81EA\u589E\u6574\u6570 serial","slug":"\u81EA\u589E\u6574\u6570-serial"},{"level":3,"title":"\u5E03\u5C14\u503C boolean","slug":"\u5E03\u5C14\u503C-boolean"},{"level":3,"title":"\u65E5\u671F date","slug":"\u65E5\u671F-date"},{"level":3,"title":"\u4E8C\u8FDB\u5236 binary / object","slug":"\u4E8C\u8FDB\u5236-binary-object"},{"level":3,"title":"\u679A\u4E3E enum","slug":"\u679A\u4E3E-enum"},{"level":3,"title":"\u7B80\u5199","slug":"\u7B80\u5199"}],"relativePath":"orm-packages/orm-property.md","lastUpdated":1715603494724}',c={},r=o('

@fxjs/orm-property

orm-property \u63D0\u4F9B\u4E86\u5BF9\u6570\u636E\u5E93\u8868\u4E2D\u7684\u5217\u7684\u5EFA\u6A21\u624B\u6BB5. \u901A\u8FC7Property meta, \u53EF\u4EE5\u5B9A\u4E49\u4E00\u4E2A Property, \u5728\u914D\u7F6E\u5BF9\u8C61\u4E2D, \u6700\u91CD\u8981\u7684\u662F type \u5B57\u6BB5. property \u7684 type \u5B57\u6BB5\u51B3\u5B9A\u5176\u57FA\u672C\u7C7B\u578B, \u5176\u5B83\u5B57\u6BB5\u5219\u7528\u4E8E\u8865\u5145\u8BF4\u660E\u8FD9\u4E2A property \u7684\u66F4\u591A\u7279\u6027\u548C\u884C\u4E3A.

Property meta

Property meta \u662F\u6307\u660E\u5EFA\u6A21\u542B\u4E49, \u6A21\u578B\u7279\u6027\u548C\u884C\u4E3A\u7684\u914D\u7F6E\u5BF9\u8C61, \u4E00\u4E2A\u7684 Property meta \u5B9A\u4E49\u53EF\u4EE5\u5305\u542B\u4EE5\u4E0B\u5B57\u6BB5:

\u5B57\u6BB5\u540D\u7C7B\u578B\u5FC5\u9700\u610F\u4E49
typestringrequiredproperty \u7684\u57FA\u672C\u7C7B\u578B
keybooleanoptional\u662F\u5426\u662F\u5173\u952E Property, \u6BD4\u5982\u4E3B\u952E, \u6216\u662F\u5173\u8054\u5173\u7CFB\u4E2D\u7684\u5173\u8054\u952E.
primarybooleanoptional\u662F\u5426\u4E3A primary key.
requiredbooleanoptional\u662F\u5426\u662F\u5FC5\u9700\u7684.
mapsTostringoptional\u6620\u5C04\u5230\u5B9E\u9645\u6570\u636E\u5E93\u8868\u4E2D\u7684\u5B57\u6BB5\u540D
uniquebooleanoptional\u662F\u5426\u4E3A unique key.
indexstringoptional\u662F\u5426\u9700\u8981\u7D22\u5F15.
serialbooleanoptional\u662F\u5426\u4E3A\u81EA\u589E\u6574\u6570. \u8BE5\u5C5E\u6027\u7684\u503C\u53EF\u80FD\u5F71\u54CD type \u7684\u6700\u7EC8\u503C
defaultValueValue | () => Valueoptional\u9ED8\u8BA4\u503C, \u6216\u8005\u8FD4\u56DE\u9ED8\u8BA4\u503C\u7684\u51FD\u6570
............

\u9664\u6B64\u4EE5\u5916, \u6839\u636E type \u7684\u4E0D\u540C, \u8FD8\u53EF\u80FD\u6709\u5176\u5B83\u7684\u8865\u5145\u5B57\u6BB5\u6765\u8868\u793A property \u7684\u66F4\u591A\u7279\u6027\u548C\u884C\u4E3A. \u5177\u4F53\u53EF\u53C2\u8003\u4E0B\u6587\u4E2D\u6BCF\u4E2A type \u7684\u8BF4\u660E\u7AE0\u8282.

type

ORM \u76EE\u524D\u652F\u6301\u5185\u7F6E\u7684 property \u7C7B\u578B\u6709:

\u7C7B\u578B\u610F\u4E49\u7B80\u5199MySQLSQLitePostgreSQL
text\u6587\u672CStringVARCHARTEXTVARCHAR
integer\u6574\u6570-INTEGERINTEGERINTEGER
number\u6570\u503C\u7C7B\u578BNumberINTEGER
DOUBLE
INTEGER
DOUBLE
INTEGER
DOUBLE
serial\u81EA\u589E\u6574\u6570-INTEGER
SERIAL
INTEGER
SERIAL
INTEGER
SERIAL
boolean\u5E03\u5C14\u503CBooleanBOOLEANBOOLEANBOOLEAN
date\u65E5\u671FDateDATEDATEDATE
binary\u4E8C\u8FDB\u5236BufferBLOBBLOBBLOB
object\u5BF9\u8C61ObjectJSONJSONJSON
enum\u679A\u4E3EArray<any>ENUMENUMENUM

\u6CE8\u610F \u540C\u6837\u7684 type, \u5728\u4E0D\u540C\u7684 database backend \u4E2D, \u53EF\u80FD\u5BF9\u5E94\u4E86\u4E0D\u540C\u7684\u5B9E\u9645\u6570\u636E\u5E93\u5B9A\u4E49, \u5982, \u540C\u6837\u662F { type: 'text', size: 255 }, \u5728 MySQL \u4E2D\u7684\u5B9A\u4E49\u662F VARCHAR(255), \u5728 SQLite \u548C PostgreSQL \u4E2D\u7684\u5B9A\u4E49\u5219\u662F TEXT.

Property \u7C7B\u578B

\u6587\u672C text

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
sizenumber\u82E5\u6620\u5C04\u7684\u5B57\u6BB5\u5177\u6709\u53EF\u53D8\u957F\u5EA6(\u5982 mysql \u4E2D\u7684 varchar), size \u8868\u793A\u5E0C\u671B\u5176\u62E5\u6709\u7684\u957F\u5EA6
bigboolean\u82E5\u6570\u636E\u5E93\u652F\u6301, \u5219 big: true \u4F7F\u7528\u5177\u6709\u8F83\u5927\u957F\u5EA6\u7684\u5B57\u6BB5\u7C7B\u578B, \u5982 mysql \u4E2D\u7684 LONGTEXT

\u6574\u6570 integer

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
sizeenum: 2, 4, 82: short/smallint; 4: integer; 8: long/bigint. \u82E5\u4F20\u5165\u4E86\u5176\u5B83\u503C, \u5219\u4FEE\u6539\u4E3A 4.
unsignedboolean\u662F\u5426\u4E3A\u65E0\u7B26\u53F7\u6574\u6570. \u8BE5\u9009\u9879\u4EC5\u5BF9 mysql \u6709\u610F\u4E49.
serialboolean\u662F\u5426\u4E3A\u81EA\u589E\u6574\u6570, \u82E5\u4E3A truthy, type \u4F1A\u88AB\u8F6C\u5316\u4E3A serial

\u6D6E\u70B9\u6570 number

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
unsignedboolean\u662F\u5426\u4E3A\u65E0\u7B26\u53F7\u6D6E\u70B9\u6570. \u8BE5\u9009\u9879\u4EC5\u5BF9 mysql < 8.0 \u6709\u610F\u4E49.
rationalboolean\u662F\u5426\u4E3A\u6D6E\u70B9\u6570, \u9ED8\u8BA4\u4E3A truthy, \u82E5\u6307\u5B9A\u4E3A false, type \u4F1A\u88AB\u8F6C\u5316\u4E3A integer

\u81EA\u589E\u6574\u6570 serial

\u8868\u793A\u81EA\u589E\u6574\u6570.

\u6CE8\u610F

  • \u6307\u5B9A\u5B57\u6BB5 { "type": "serial" } \u6216 { serial: true } \u662F\u7B49\u4EF7\u7684, \u4F1A\u9690\u5F0F\u5730\u542F\u7528 { "primary": "true" }.
  • \u5BF9\u4E8E mysql \u800C\u8A00, \u4F1A\u9690\u5F0F\u5730\u542F\u7528 { "primary": "true", key: "true" }

\u5E03\u5C14\u503C boolean

\u8868\u793A\u5E03\u5C14\u7C7B\u578B

\u65E5\u671F date

\u8868\u793A\u65E5\u671F\u7C7B\u578B(\u5177\u4F53\u5230\u65E5)

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
timeboolean\u662F\u5426\u5305\u542B\u5F53\u5177\u4F53\u5230\u5FAE\u79D2\u7684\u65F6\u95F4\u4FE1\u606F

\u4E8C\u8FDB\u5236 binary / object

\u8868\u793A\u4E8C\u8FDB\u5236\u5BF9\u8C61

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
bigboolean\u82E5\u6570\u636E\u5E93\u652F\u6301, \u5219 big: true \u4F7F\u7528\u5177\u6709\u8F83\u5927\u957F\u5EA6\u7684\u4E8C\u8FDB\u5236\u6570\u636E, \u5982 mysql \u4E2D\u7684 LONGBLOB

\u679A\u4E3E enum

\u8868\u793A\u679A\u4E3E\u503C\u7C7B\u578B

\u7B80\u5199

\u7B80\u5199\u7B49\u4EF7\u914D\u7F6E
String{ type: 'text' }
Number{ type: 'number' }
Boolean{ type: 'boolean' }
Date{ type: 'date' }
Object{ type: 'object' }
Buffer{ type: 'binary' }
',36),a=[r];function h(n,l,i,p,s,b){return e(),d("div",null,a)}var g=t(c,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,z as d,D as e,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const u='{"title":"@fxjs/orm-property","description":"","frontmatter":{},"headers":[{"level":2,"title":"Property meta","slug":"property-meta"},{"level":2,"title":"type","slug":"type"},{"level":2,"title":"Property \u7C7B\u578B","slug":"property-\u7C7B\u578B"},{"level":3,"title":"\u6587\u672C text","slug":"\u6587\u672C-text"},{"level":3,"title":"\u6574\u6570 integer","slug":"\u6574\u6570-integer"},{"level":3,"title":"\u6D6E\u70B9\u6570 number","slug":"\u6D6E\u70B9\u6570-number"},{"level":3,"title":"\u81EA\u589E\u6574\u6570 serial","slug":"\u81EA\u589E\u6574\u6570-serial"},{"level":3,"title":"\u5E03\u5C14\u503C boolean","slug":"\u5E03\u5C14\u503C-boolean"},{"level":3,"title":"\u65E5\u671F date","slug":"\u65E5\u671F-date"},{"level":3,"title":"\u4E8C\u8FDB\u5236 binary / object","slug":"\u4E8C\u8FDB\u5236-binary-object"},{"level":3,"title":"\u679A\u4E3E enum","slug":"\u679A\u4E3E-enum"},{"level":3,"title":"\u7B80\u5199","slug":"\u7B80\u5199"}],"relativePath":"orm-packages/orm-property.md","lastUpdated":1715847568873}',c={},r=o('

@fxjs/orm-property

orm-property \u63D0\u4F9B\u4E86\u5BF9\u6570\u636E\u5E93\u8868\u4E2D\u7684\u5217\u7684\u5EFA\u6A21\u624B\u6BB5. \u901A\u8FC7Property meta, \u53EF\u4EE5\u5B9A\u4E49\u4E00\u4E2A Property, \u5728\u914D\u7F6E\u5BF9\u8C61\u4E2D, \u6700\u91CD\u8981\u7684\u662F type \u5B57\u6BB5. property \u7684 type \u5B57\u6BB5\u51B3\u5B9A\u5176\u57FA\u672C\u7C7B\u578B, \u5176\u5B83\u5B57\u6BB5\u5219\u7528\u4E8E\u8865\u5145\u8BF4\u660E\u8FD9\u4E2A property \u7684\u66F4\u591A\u7279\u6027\u548C\u884C\u4E3A.

Property meta

Property meta \u662F\u6307\u660E\u5EFA\u6A21\u542B\u4E49, \u6A21\u578B\u7279\u6027\u548C\u884C\u4E3A\u7684\u914D\u7F6E\u5BF9\u8C61, \u4E00\u4E2A\u7684 Property meta \u5B9A\u4E49\u53EF\u4EE5\u5305\u542B\u4EE5\u4E0B\u5B57\u6BB5:

\u5B57\u6BB5\u540D\u7C7B\u578B\u5FC5\u9700\u610F\u4E49
typestringrequiredproperty \u7684\u57FA\u672C\u7C7B\u578B
keybooleanoptional\u662F\u5426\u662F\u5173\u952E Property, \u6BD4\u5982\u4E3B\u952E, \u6216\u662F\u5173\u8054\u5173\u7CFB\u4E2D\u7684\u5173\u8054\u952E.
primarybooleanoptional\u662F\u5426\u4E3A primary key.
requiredbooleanoptional\u662F\u5426\u662F\u5FC5\u9700\u7684.
mapsTostringoptional\u6620\u5C04\u5230\u5B9E\u9645\u6570\u636E\u5E93\u8868\u4E2D\u7684\u5B57\u6BB5\u540D
uniquebooleanoptional\u662F\u5426\u4E3A unique key.
indexstringoptional\u662F\u5426\u9700\u8981\u7D22\u5F15.
serialbooleanoptional\u662F\u5426\u4E3A\u81EA\u589E\u6574\u6570. \u8BE5\u5C5E\u6027\u7684\u503C\u53EF\u80FD\u5F71\u54CD type \u7684\u6700\u7EC8\u503C
defaultValueValue | () => Valueoptional\u9ED8\u8BA4\u503C, \u6216\u8005\u8FD4\u56DE\u9ED8\u8BA4\u503C\u7684\u51FD\u6570
............

\u9664\u6B64\u4EE5\u5916, \u6839\u636E type \u7684\u4E0D\u540C, \u8FD8\u53EF\u80FD\u6709\u5176\u5B83\u7684\u8865\u5145\u5B57\u6BB5\u6765\u8868\u793A property \u7684\u66F4\u591A\u7279\u6027\u548C\u884C\u4E3A. \u5177\u4F53\u53EF\u53C2\u8003\u4E0B\u6587\u4E2D\u6BCF\u4E2A type \u7684\u8BF4\u660E\u7AE0\u8282.

type

ORM \u76EE\u524D\u652F\u6301\u5185\u7F6E\u7684 property \u7C7B\u578B\u6709:

\u7C7B\u578B\u610F\u4E49\u7B80\u5199MySQLSQLitePostgreSQL
text\u6587\u672CStringVARCHARTEXTVARCHAR
integer\u6574\u6570-INTEGERINTEGERINTEGER
number\u6570\u503C\u7C7B\u578BNumberINTEGER
DOUBLE
INTEGER
DOUBLE
INTEGER
DOUBLE
serial\u81EA\u589E\u6574\u6570-INTEGER
SERIAL
INTEGER
SERIAL
INTEGER
SERIAL
boolean\u5E03\u5C14\u503CBooleanBOOLEANBOOLEANBOOLEAN
date\u65E5\u671FDateDATEDATEDATE
binary\u4E8C\u8FDB\u5236BufferBLOBBLOBBLOB
object\u5BF9\u8C61ObjectJSONJSONJSON
enum\u679A\u4E3EArray<any>ENUMENUMENUM

\u6CE8\u610F \u540C\u6837\u7684 type, \u5728\u4E0D\u540C\u7684 database backend \u4E2D, \u53EF\u80FD\u5BF9\u5E94\u4E86\u4E0D\u540C\u7684\u5B9E\u9645\u6570\u636E\u5E93\u5B9A\u4E49, \u5982, \u540C\u6837\u662F { type: 'text', size: 255 }, \u5728 MySQL \u4E2D\u7684\u5B9A\u4E49\u662F VARCHAR(255), \u5728 SQLite \u548C PostgreSQL \u4E2D\u7684\u5B9A\u4E49\u5219\u662F TEXT.

Property \u7C7B\u578B

\u6587\u672C text

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
sizenumber\u82E5\u6620\u5C04\u7684\u5B57\u6BB5\u5177\u6709\u53EF\u53D8\u957F\u5EA6(\u5982 mysql \u4E2D\u7684 varchar), size \u8868\u793A\u5E0C\u671B\u5176\u62E5\u6709\u7684\u957F\u5EA6
bigboolean\u82E5\u6570\u636E\u5E93\u652F\u6301, \u5219 big: true \u4F7F\u7528\u5177\u6709\u8F83\u5927\u957F\u5EA6\u7684\u5B57\u6BB5\u7C7B\u578B, \u5982 mysql \u4E2D\u7684 LONGTEXT

\u6574\u6570 integer

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
sizeenum: 2, 4, 82: short/smallint; 4: integer; 8: long/bigint. \u82E5\u4F20\u5165\u4E86\u5176\u5B83\u503C, \u5219\u4FEE\u6539\u4E3A 4.
unsignedboolean\u662F\u5426\u4E3A\u65E0\u7B26\u53F7\u6574\u6570. \u8BE5\u9009\u9879\u4EC5\u5BF9 mysql \u6709\u610F\u4E49.
serialboolean\u662F\u5426\u4E3A\u81EA\u589E\u6574\u6570, \u82E5\u4E3A truthy, type \u4F1A\u88AB\u8F6C\u5316\u4E3A serial

\u6D6E\u70B9\u6570 number

\u8865\u5145\u5B57\u6BB5\u7C7B\u578B

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
unsignedboolean\u662F\u5426\u4E3A\u65E0\u7B26\u53F7\u6D6E\u70B9\u6570. \u8BE5\u9009\u9879\u4EC5\u5BF9 mysql < 8.0 \u6709\u610F\u4E49.
rationalboolean\u662F\u5426\u4E3A\u6D6E\u70B9\u6570, \u9ED8\u8BA4\u4E3A truthy, \u82E5\u6307\u5B9A\u4E3A false, type \u4F1A\u88AB\u8F6C\u5316\u4E3A integer

\u81EA\u589E\u6574\u6570 serial

\u8868\u793A\u81EA\u589E\u6574\u6570.

\u6CE8\u610F

  • \u6307\u5B9A\u5B57\u6BB5 { "type": "serial" } \u6216 { serial: true } \u662F\u7B49\u4EF7\u7684, \u4F1A\u9690\u5F0F\u5730\u542F\u7528 { "primary": "true" }.
  • \u5BF9\u4E8E mysql \u800C\u8A00, \u4F1A\u9690\u5F0F\u5730\u542F\u7528 { "primary": "true", key: "true" }

\u5E03\u5C14\u503C boolean

\u8868\u793A\u5E03\u5C14\u7C7B\u578B

\u65E5\u671F date

\u8868\u793A\u65E5\u671F\u7C7B\u578B(\u5177\u4F53\u5230\u65E5)

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
timeboolean\u662F\u5426\u5305\u542B\u5F53\u5177\u4F53\u5230\u5FAE\u79D2\u7684\u65F6\u95F4\u4FE1\u606F

\u4E8C\u8FDB\u5236 binary / object

\u8868\u793A\u4E8C\u8FDB\u5236\u5BF9\u8C61

\u5B57\u6BB5\u540D\u7C7B\u578B\u610F\u4E49
bigboolean\u82E5\u6570\u636E\u5E93\u652F\u6301, \u5219 big: true \u4F7F\u7528\u5177\u6709\u8F83\u5927\u957F\u5EA6\u7684\u4E8C\u8FDB\u5236\u6570\u636E, \u5982 mysql \u4E2D\u7684 LONGBLOB

\u679A\u4E3E enum

\u8868\u793A\u679A\u4E3E\u503C\u7C7B\u578B

\u7B80\u5199

\u7B80\u5199\u7B49\u4EF7\u914D\u7F6E
String{ type: 'text' }
Number{ type: 'number' }
Boolean{ type: 'boolean' }
Date{ type: 'date' }
Object{ type: 'object' }
Buffer{ type: 'binary' }
',36),a=[r];function h(n,l,i,p,s,b){return e(),d("div",null,a)}var g=t(c,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/orm-packages_orm-property.md.2e1faee8.lean.js b/assets/orm-packages_orm-property.md.58648a54.lean.js similarity index 94% rename from assets/orm-packages_orm-property.md.2e1faee8.lean.js rename to assets/orm-packages_orm-property.md.58648a54.lean.js index a1b0a748..43de6c7a 100644 --- a/assets/orm-packages_orm-property.md.2e1faee8.lean.js +++ b/assets/orm-packages_orm-property.md.58648a54.lean.js @@ -1 +1 @@ -import{_ as t,z as d,D as e,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const u='{"title":"@fxjs/orm-property","description":"","frontmatter":{},"headers":[{"level":2,"title":"Property meta","slug":"property-meta"},{"level":2,"title":"type","slug":"type"},{"level":2,"title":"Property \u7C7B\u578B","slug":"property-\u7C7B\u578B"},{"level":3,"title":"\u6587\u672C text","slug":"\u6587\u672C-text"},{"level":3,"title":"\u6574\u6570 integer","slug":"\u6574\u6570-integer"},{"level":3,"title":"\u6D6E\u70B9\u6570 number","slug":"\u6D6E\u70B9\u6570-number"},{"level":3,"title":"\u81EA\u589E\u6574\u6570 serial","slug":"\u81EA\u589E\u6574\u6570-serial"},{"level":3,"title":"\u5E03\u5C14\u503C boolean","slug":"\u5E03\u5C14\u503C-boolean"},{"level":3,"title":"\u65E5\u671F date","slug":"\u65E5\u671F-date"},{"level":3,"title":"\u4E8C\u8FDB\u5236 binary / object","slug":"\u4E8C\u8FDB\u5236-binary-object"},{"level":3,"title":"\u679A\u4E3E enum","slug":"\u679A\u4E3E-enum"},{"level":3,"title":"\u7B80\u5199","slug":"\u7B80\u5199"}],"relativePath":"orm-packages/orm-property.md","lastUpdated":1715603494724}',c={},r=o("",36),a=[r];function h(n,l,i,p,s,b){return e(),d("div",null,a)}var g=t(c,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,z as d,D as e,X as o}from"./plugin-vue_export-helper.1f71b9e3.js";const u='{"title":"@fxjs/orm-property","description":"","frontmatter":{},"headers":[{"level":2,"title":"Property meta","slug":"property-meta"},{"level":2,"title":"type","slug":"type"},{"level":2,"title":"Property \u7C7B\u578B","slug":"property-\u7C7B\u578B"},{"level":3,"title":"\u6587\u672C text","slug":"\u6587\u672C-text"},{"level":3,"title":"\u6574\u6570 integer","slug":"\u6574\u6570-integer"},{"level":3,"title":"\u6D6E\u70B9\u6570 number","slug":"\u6D6E\u70B9\u6570-number"},{"level":3,"title":"\u81EA\u589E\u6574\u6570 serial","slug":"\u81EA\u589E\u6574\u6570-serial"},{"level":3,"title":"\u5E03\u5C14\u503C boolean","slug":"\u5E03\u5C14\u503C-boolean"},{"level":3,"title":"\u65E5\u671F date","slug":"\u65E5\u671F-date"},{"level":3,"title":"\u4E8C\u8FDB\u5236 binary / object","slug":"\u4E8C\u8FDB\u5236-binary-object"},{"level":3,"title":"\u679A\u4E3E enum","slug":"\u679A\u4E3E-enum"},{"level":3,"title":"\u7B80\u5199","slug":"\u7B80\u5199"}],"relativePath":"orm-packages/orm-property.md","lastUpdated":1715847568873}',c={},r=o("",36),a=[r];function h(n,l,i,p,s,b){return e(),d("div",null,a)}var g=t(c,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/orm-packages_sql-ddl-sync.md.2ee848a8.js b/assets/orm-packages_sql-ddl-sync.md.79deca3c.js similarity index 99% rename from assets/orm-packages_sql-ddl-sync.md.2ee848a8.js rename to assets/orm-packages_sql-ddl-sync.md.79deca3c.js index 69d11837..0768b72b 100644 --- a/assets/orm-packages_sql-ddl-sync.md.2ee848a8.js +++ b/assets/orm-packages_sql-ddl-sync.md.79deca3c.js @@ -1,4 +1,4 @@ -import{_ as c,z as p,A as n,I as s,O as a,V as t,X as o,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const Y='{"title":"@fxjs/sql-ddl-sync","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4F9D\u8D56","slug":"\u4F9D\u8D56"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Sync","slug":"sync"},{"level":3,"title":"new Sync::Sync(opts: object)","slug":"new-sync-sync-opts-object"},{"level":3,"title":"Sync::collections","slug":"sync-collections-readonly"},{"level":3,"title":"Sync::dbdriver","slug":"sync-dbdriver-readonly"},{"level":3,"title":"Sync::Dialect","slug":"sync-dialect-readonly"},{"level":3,"title":"Sync::types","slug":"sync-types-readonly"},{"level":3,"title":"Sync::defineCollection(collection_name: string, properties: object)","slug":"sync-definecollection-collection-name-string-properties-object"},{"level":3,"title":"Sync::findCollection(collection: string)","slug":"sync-findcollection-collection-string"},{"level":3,"title":"Sync::defineType(type: string, proto: object)","slug":"sync-definetype-type-string-proto-object"},{"level":3,"title":"Sync::createCollection(collection_def: object)","slug":"sync-createcollection-collection-def-object"},{"level":3,"title":"Sync::syncCollection(collection_name: string, opts: object)","slug":"sync-synccollection-collection-name-string-opts-object"},{"level":3,"title":"Sync::syncIndexes(collection: string, indexes: object[])","slug":"sync-syncindexes-collection-string-indexes-object"},{"level":3,"title":"Sync::sync()","slug":"sync-sync-blocking"},{"level":3,"title":"Sync::sync(cb: Function)","slug":"sync-sync-cb-function-non-blocking"},{"level":3,"title":"Sync::forceSync()","slug":"sync-forcesync-blocking"},{"level":3,"title":"Sync::forceSync(cb: Function)","slug":"sync-forcesync-cb-function-non-blocking"},{"level":3,"title":"Sync::needDefinitionToColumn(property: object, column: object, options?: object)","slug":"sync-needdefinitiontocolumn-property-object-column-object-options-object"},{"level":2,"title":"\u95EE\u9898","slug":"\u95EE\u9898"},{"level":3,"title":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565","slug":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"}],"relativePath":"orm-packages/sql-ddl-sync.md","lastUpdated":1715603494724}',i={},d=o(`

@fxjs/sql-ddl-sync

NPM version\xA0 NPM download\xA0 NPM download monthly

sql-ddl-sync, \u610F\u4E3A SQL DDL Synchronization, \u5373\u5C06 DDL \u5B9A\u4E49\u7684\u6570\u636E\u6A21\u578B\u540C\u6B65\u5230\u6570\u636E\u5E93.

  • \u6570\u636E\u5E93\u900F\u660E: \u5728\u8BBE\u8BA1\u4E0A, \u5BF9\u7528\u6237\u800C\u8A00, sql-ddl-sync \u63D0\u4F9B\u4E86\u65E0\u5173\u6570\u636E\u5E93\u7C7B\u578B DDL \u540C\u6B65\u64CD\u4F5C, \u6240\u6709\u548C SQL \u6570\u636E\u5E93\u4EA4\u4E92\u7684\u7EC6\u8282\u5BF9\u7528\u6237\u800C\u8A00\u90FD\u662F\u900F\u660E\u7684. \u5982\u6B64, \u4F7F\u7528 sql-ddl-sync \u7684\u7528\u6237\u53EF\u4EE5\u5C06\u7CBE\u529B\u653E\u5728\u6570\u636E\u6A21\u578B\u8BBE\u8BA1\u4E0A, \u800C\u4E0D\u7528\u5173\u5FC3\u6570\u636E\u5E93\u7684\u7C7B\u522B.
  • \u4E00\u6B21\u5EFA\u6A21, \u591A\u5E93\u9002\u7528: \u53EA\u9700\u5B9A\u4E49\u597D\u6570\u636E\u7C7B\u578B, \u5C31\u53EF\u4EE5\u4F7F\u7528\u4E8E\u4E0D\u540C\u7684\u6570\u636E\u5E93: mysql, sqlite, postgresql \u7B49

\u4F9D\u8D56

sql-ddl-sync \u4F9D\u8D56 db-driver \u548C\u6570\u636E\u5E93\u8FDB\u884C\u4EA4\u4E92, \u4F60\u9700\u8981\u5355\u72EC\u5B89\u88C5 @fxjs/db-driver \u4EE5\u4F7F\u5F97 @fxjs/sql-ddl-sync \u6765\u8FDE\u63A5\u6570\u636E\u5E93.

npm i -S @fxjs/db-driver @fxjs/sql-ddl-sync
+import{_ as c,z as p,A as n,I as s,O as a,V as t,X as o,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const Y='{"title":"@fxjs/sql-ddl-sync","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4F9D\u8D56","slug":"\u4F9D\u8D56"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Sync","slug":"sync"},{"level":3,"title":"new Sync::Sync(opts: object)","slug":"new-sync-sync-opts-object"},{"level":3,"title":"Sync::collections","slug":"sync-collections-readonly"},{"level":3,"title":"Sync::dbdriver","slug":"sync-dbdriver-readonly"},{"level":3,"title":"Sync::Dialect","slug":"sync-dialect-readonly"},{"level":3,"title":"Sync::types","slug":"sync-types-readonly"},{"level":3,"title":"Sync::defineCollection(collection_name: string, properties: object)","slug":"sync-definecollection-collection-name-string-properties-object"},{"level":3,"title":"Sync::findCollection(collection: string)","slug":"sync-findcollection-collection-string"},{"level":3,"title":"Sync::defineType(type: string, proto: object)","slug":"sync-definetype-type-string-proto-object"},{"level":3,"title":"Sync::createCollection(collection_def: object)","slug":"sync-createcollection-collection-def-object"},{"level":3,"title":"Sync::syncCollection(collection_name: string, opts: object)","slug":"sync-synccollection-collection-name-string-opts-object"},{"level":3,"title":"Sync::syncIndexes(collection: string, indexes: object[])","slug":"sync-syncindexes-collection-string-indexes-object"},{"level":3,"title":"Sync::sync()","slug":"sync-sync-blocking"},{"level":3,"title":"Sync::sync(cb: Function)","slug":"sync-sync-cb-function-non-blocking"},{"level":3,"title":"Sync::forceSync()","slug":"sync-forcesync-blocking"},{"level":3,"title":"Sync::forceSync(cb: Function)","slug":"sync-forcesync-cb-function-non-blocking"},{"level":3,"title":"Sync::needDefinitionToColumn(property: object, column: object, options?: object)","slug":"sync-needdefinitiontocolumn-property-object-column-object-options-object"},{"level":2,"title":"\u95EE\u9898","slug":"\u95EE\u9898"},{"level":3,"title":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565","slug":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"}],"relativePath":"orm-packages/sql-ddl-sync.md","lastUpdated":1715847568873}',i={},d=o(`

@fxjs/sql-ddl-sync

NPM version\xA0 NPM download\xA0 NPM download monthly

sql-ddl-sync, \u610F\u4E3A SQL DDL Synchronization, \u5373\u5C06 DDL \u5B9A\u4E49\u7684\u6570\u636E\u6A21\u578B\u540C\u6B65\u5230\u6570\u636E\u5E93.

  • \u6570\u636E\u5E93\u900F\u660E: \u5728\u8BBE\u8BA1\u4E0A, \u5BF9\u7528\u6237\u800C\u8A00, sql-ddl-sync \u63D0\u4F9B\u4E86\u65E0\u5173\u6570\u636E\u5E93\u7C7B\u578B DDL \u540C\u6B65\u64CD\u4F5C, \u6240\u6709\u548C SQL \u6570\u636E\u5E93\u4EA4\u4E92\u7684\u7EC6\u8282\u5BF9\u7528\u6237\u800C\u8A00\u90FD\u662F\u900F\u660E\u7684. \u5982\u6B64, \u4F7F\u7528 sql-ddl-sync \u7684\u7528\u6237\u53EF\u4EE5\u5C06\u7CBE\u529B\u653E\u5728\u6570\u636E\u6A21\u578B\u8BBE\u8BA1\u4E0A, \u800C\u4E0D\u7528\u5173\u5FC3\u6570\u636E\u5E93\u7684\u7C7B\u522B.
  • \u4E00\u6B21\u5EFA\u6A21, \u591A\u5E93\u9002\u7528: \u53EA\u9700\u5B9A\u4E49\u597D\u6570\u636E\u7C7B\u578B, \u5C31\u53EF\u4EE5\u4F7F\u7528\u4E8E\u4E0D\u540C\u7684\u6570\u636E\u5E93: mysql, sqlite, postgresql \u7B49

\u4F9D\u8D56

sql-ddl-sync \u4F9D\u8D56 db-driver \u548C\u6570\u636E\u5E93\u8FDB\u884C\u4EA4\u4E92, \u4F60\u9700\u8981\u5355\u72EC\u5B89\u88C5 @fxjs/db-driver \u4EE5\u4F7F\u5F97 @fxjs/sql-ddl-sync \u6765\u8FDE\u63A5\u6570\u636E\u5E93.

npm i -S @fxjs/db-driver @fxjs/sql-ddl-sync
 

\u5FEB\u901F\u5F00\u59CB

\u4E0B\u9762\u662F\u4F7F\u7528 sql-ddl-sync \u8FDB\u884C\u5EFA\u6A21\u7684\u793A\u4F8B, \u8BBE\u60F3\u6211\u4EEC\u6709\u4E2A mysql \u6570\u636E\u5E93 mydb, \u91CC\u9762\u4E0D\u5305\u542B\u4EFB\u4F55\u9ED8\u8BA4\u8868\u4EE5\u5916\u7684\u8868

const DBDriver   = require("@fxjs/db-driver");
 const Sync  = require("@fxjs/sql-ddl-sync").Sync;
 
diff --git a/assets/orm-packages_sql-ddl-sync.md.2ee848a8.lean.js b/assets/orm-packages_sql-ddl-sync.md.79deca3c.lean.js
similarity index 98%
rename from assets/orm-packages_sql-ddl-sync.md.2ee848a8.lean.js
rename to assets/orm-packages_sql-ddl-sync.md.79deca3c.lean.js
index 015e30e3..4f75fb40 100644
--- a/assets/orm-packages_sql-ddl-sync.md.2ee848a8.lean.js
+++ b/assets/orm-packages_sql-ddl-sync.md.79deca3c.lean.js
@@ -1 +1 @@
-import{_ as c,z as p,A as n,I as s,O as a,V as t,X as o,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const Y='{"title":"@fxjs/sql-ddl-sync","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4F9D\u8D56","slug":"\u4F9D\u8D56"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Sync","slug":"sync"},{"level":3,"title":"new Sync::Sync(opts: object)","slug":"new-sync-sync-opts-object"},{"level":3,"title":"Sync::collections","slug":"sync-collections-readonly"},{"level":3,"title":"Sync::dbdriver","slug":"sync-dbdriver-readonly"},{"level":3,"title":"Sync::Dialect","slug":"sync-dialect-readonly"},{"level":3,"title":"Sync::types","slug":"sync-types-readonly"},{"level":3,"title":"Sync::defineCollection(collection_name: string, properties: object)","slug":"sync-definecollection-collection-name-string-properties-object"},{"level":3,"title":"Sync::findCollection(collection: string)","slug":"sync-findcollection-collection-string"},{"level":3,"title":"Sync::defineType(type: string, proto: object)","slug":"sync-definetype-type-string-proto-object"},{"level":3,"title":"Sync::createCollection(collection_def: object)","slug":"sync-createcollection-collection-def-object"},{"level":3,"title":"Sync::syncCollection(collection_name: string, opts: object)","slug":"sync-synccollection-collection-name-string-opts-object"},{"level":3,"title":"Sync::syncIndexes(collection: string, indexes: object[])","slug":"sync-syncindexes-collection-string-indexes-object"},{"level":3,"title":"Sync::sync()","slug":"sync-sync-blocking"},{"level":3,"title":"Sync::sync(cb: Function)","slug":"sync-sync-cb-function-non-blocking"},{"level":3,"title":"Sync::forceSync()","slug":"sync-forcesync-blocking"},{"level":3,"title":"Sync::forceSync(cb: Function)","slug":"sync-forcesync-cb-function-non-blocking"},{"level":3,"title":"Sync::needDefinitionToColumn(property: object, column: object, options?: object)","slug":"sync-needdefinitiontocolumn-property-object-column-object-options-object"},{"level":2,"title":"\u95EE\u9898","slug":"\u95EE\u9898"},{"level":3,"title":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565","slug":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"}],"relativePath":"orm-packages/sql-ddl-sync.md","lastUpdated":1715603494724}',i={},d=o("",16),u={id:"sync-collections-readonly",tabindex:"-1"},y=n("code",null,"Sync::collections",-1),k=n("a",{class:"header-anchor",href:"#sync-collections-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684 collections.",-1),g={id:"sync-dbdriver-readonly",tabindex:"-1"},_=n("code",null,"Sync::dbdriver",-1),b=n("a",{class:"header-anchor",href:"#sync-dbdriver-readonly","aria-hidden":"true"},"#",-1),f=n("p",null,"sync \u5B9E\u4F8B\u4F7F\u7528\u7684 dbdriver.",-1),m={id:"sync-dialect-readonly",tabindex:"-1"},q=n("code",null,"Sync::Dialect",-1),j=n("a",{class:"header-anchor",href:"#sync-dialect-readonly","aria-hidden":"true"},"#",-1),S=n("p",null,"sync \u5B9E\u4F8B\u4F7F\u7528\u7684 Dialect, \u53D6\u51B3\u4E8E dbdriver \u7684\u9A71\u52A8\u7C7B\u578B. \u5982 dbdriver \u8FDE\u63A5\u5230 mysql, \u5219 Dialect \u4E5F\u9002\u914D\u4E0E mysql",-1),v={id:"sync-types-readonly",tabindex:"-1"},x=n("code",null,"Sync::types",-1),w=n("a",{class:"header-anchor",href:"#sync-types-readonly","aria-hidden":"true"},"#",-1),D=o("",14),A={id:"sync-sync-blocking",tabindex:"-1"},E=n("code",null,"Sync::sync()",-1),C=n("a",{class:"header-anchor",href:"#sync-sync-blocking","aria-hidden":"true"},"#",-1),T=n("p",null,[s("\u540C\u6B65 sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684\u6240\u6709 collection \u5230\u6570\u636E\u5E93\u4E2D, \u6BCF\u4E2A\u8868\u5728\u540C\u6B65\u7684\u65F6\u5019\u90FD\u91C7\u53D6\u7684\u540C\u6B65\u7B56\u7565\u53D6\u51B3\u4E8E "),n("code",null,"sync.strategy"),s(", \u53C2\u8003"),n("a",{href:"#%E5%AD%97%E6%AE%B5%E5%90%8C%E6%AD%A5%E7%AD%96%E7%95%A5"},"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"),s(".")],-1),B={id:"sync-sync-cb-function-non-blocking",tabindex:"-1"},N=n("code",null,"Sync::sync(cb: Function)",-1),V=n("a",{class:"header-anchor",href:"#sync-sync-cb-function-non-blocking","aria-hidden":"true"},"#",-1),P=n("p",null,[s("\u548C "),n("code",null,"Sync::sync()"),s(" \u4E00\u6837, \u4F46\u662F\u662F\u975E\u963B\u585E\u7248\u672C.")],-1),I={id:"sync-forcesync-blocking",tabindex:"-1"},z=n("code",null,"Sync::forceSync()",-1),L=n("a",{class:"header-anchor",href:"#sync-forcesync-blocking","aria-hidden":"true"},"#",-1),F=n("p",null,[s("\u540C\u6B65 sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684\u6240\u6709 collection \u5230\u6570\u636E\u5E93\u4E2D, \u6BCF\u4E2A\u8868\u5728\u540C\u6B65\u7684\u65F6\u5019\u90FD\u91C7\u53D6\u7684\u540C\u6B65\u7B56\u7565\u5747\u4E3A "),n("code",null,"'hard'"),s(", \u53C2\u8003"),n("a",{href:"#%E5%AD%97%E6%AE%B5%E5%90%8C%E6%AD%A5%E7%AD%96%E7%95%A5"},"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"),s(".")],-1),$={id:"sync-forcesync-cb-function-non-blocking",tabindex:"-1"},M=n("code",null,"Sync::forceSync(cb: Function)",-1),Q=n("a",{class:"header-anchor",href:"#sync-forcesync-cb-function-non-blocking","aria-hidden":"true"},"#",-1),R=o("",14);function O(U,G,X,H,J,K){const e=l("Badge");return r(),p("div",null,[d,n("h3",u,[y,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),k]),h,n("h3",g,[_,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),b]),f,n("h3",m,[q,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),j]),S,n("h3",v,[x,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),w]),D,n("h3",A,[E,s(),a(e,{type:"info"},{default:t(()=>[s("blocking")]),_:1}),s(),C]),T,n("h3",B,[N,s(),a(e,{type:"info"},{default:t(()=>[s("non-blocking")]),_:1}),s(),V]),P,n("h3",I,[z,s(),a(e,{type:"info"},{default:t(()=>[s("blocking")]),_:1}),s(),L]),F,n("h3",$,[M,s(),a(e,{type:"info"},{default:t(()=>[s("non-blocking")]),_:1}),s(),Q]),R])}var Z=c(i,[["render",O]]);export{Y as __pageData,Z as default};
+import{_ as c,z as p,A as n,I as s,O as a,V as t,X as o,T as l,D as r}from"./plugin-vue_export-helper.1f71b9e3.js";const Y='{"title":"@fxjs/sql-ddl-sync","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u4F9D\u8D56","slug":"\u4F9D\u8D56"},{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Sync","slug":"sync"},{"level":3,"title":"new Sync::Sync(opts: object)","slug":"new-sync-sync-opts-object"},{"level":3,"title":"Sync::collections","slug":"sync-collections-readonly"},{"level":3,"title":"Sync::dbdriver","slug":"sync-dbdriver-readonly"},{"level":3,"title":"Sync::Dialect","slug":"sync-dialect-readonly"},{"level":3,"title":"Sync::types","slug":"sync-types-readonly"},{"level":3,"title":"Sync::defineCollection(collection_name: string, properties: object)","slug":"sync-definecollection-collection-name-string-properties-object"},{"level":3,"title":"Sync::findCollection(collection: string)","slug":"sync-findcollection-collection-string"},{"level":3,"title":"Sync::defineType(type: string, proto: object)","slug":"sync-definetype-type-string-proto-object"},{"level":3,"title":"Sync::createCollection(collection_def: object)","slug":"sync-createcollection-collection-def-object"},{"level":3,"title":"Sync::syncCollection(collection_name: string, opts: object)","slug":"sync-synccollection-collection-name-string-opts-object"},{"level":3,"title":"Sync::syncIndexes(collection: string, indexes: object[])","slug":"sync-syncindexes-collection-string-indexes-object"},{"level":3,"title":"Sync::sync()","slug":"sync-sync-blocking"},{"level":3,"title":"Sync::sync(cb: Function)","slug":"sync-sync-cb-function-non-blocking"},{"level":3,"title":"Sync::forceSync()","slug":"sync-forcesync-blocking"},{"level":3,"title":"Sync::forceSync(cb: Function)","slug":"sync-forcesync-cb-function-non-blocking"},{"level":3,"title":"Sync::needDefinitionToColumn(property: object, column: object, options?: object)","slug":"sync-needdefinitiontocolumn-property-object-column-object-options-object"},{"level":2,"title":"\u95EE\u9898","slug":"\u95EE\u9898"},{"level":3,"title":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565","slug":"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"}],"relativePath":"orm-packages/sql-ddl-sync.md","lastUpdated":1715847568873}',i={},d=o("",16),u={id:"sync-collections-readonly",tabindex:"-1"},y=n("code",null,"Sync::collections",-1),k=n("a",{class:"header-anchor",href:"#sync-collections-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684 collections.",-1),g={id:"sync-dbdriver-readonly",tabindex:"-1"},_=n("code",null,"Sync::dbdriver",-1),b=n("a",{class:"header-anchor",href:"#sync-dbdriver-readonly","aria-hidden":"true"},"#",-1),f=n("p",null,"sync \u5B9E\u4F8B\u4F7F\u7528\u7684 dbdriver.",-1),m={id:"sync-dialect-readonly",tabindex:"-1"},q=n("code",null,"Sync::Dialect",-1),j=n("a",{class:"header-anchor",href:"#sync-dialect-readonly","aria-hidden":"true"},"#",-1),S=n("p",null,"sync \u5B9E\u4F8B\u4F7F\u7528\u7684 Dialect, \u53D6\u51B3\u4E8E dbdriver \u7684\u9A71\u52A8\u7C7B\u578B. \u5982 dbdriver \u8FDE\u63A5\u5230 mysql, \u5219 Dialect \u4E5F\u9002\u914D\u4E0E mysql",-1),v={id:"sync-types-readonly",tabindex:"-1"},x=n("code",null,"Sync::types",-1),w=n("a",{class:"header-anchor",href:"#sync-types-readonly","aria-hidden":"true"},"#",-1),D=o("",14),A={id:"sync-sync-blocking",tabindex:"-1"},E=n("code",null,"Sync::sync()",-1),C=n("a",{class:"header-anchor",href:"#sync-sync-blocking","aria-hidden":"true"},"#",-1),T=n("p",null,[s("\u540C\u6B65 sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684\u6240\u6709 collection \u5230\u6570\u636E\u5E93\u4E2D, \u6BCF\u4E2A\u8868\u5728\u540C\u6B65\u7684\u65F6\u5019\u90FD\u91C7\u53D6\u7684\u540C\u6B65\u7B56\u7565\u53D6\u51B3\u4E8E "),n("code",null,"sync.strategy"),s(", \u53C2\u8003"),n("a",{href:"#%E5%AD%97%E6%AE%B5%E5%90%8C%E6%AD%A5%E7%AD%96%E7%95%A5"},"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"),s(".")],-1),B={id:"sync-sync-cb-function-non-blocking",tabindex:"-1"},N=n("code",null,"Sync::sync(cb: Function)",-1),V=n("a",{class:"header-anchor",href:"#sync-sync-cb-function-non-blocking","aria-hidden":"true"},"#",-1),P=n("p",null,[s("\u548C "),n("code",null,"Sync::sync()"),s(" \u4E00\u6837, \u4F46\u662F\u662F\u975E\u963B\u585E\u7248\u672C.")],-1),I={id:"sync-forcesync-blocking",tabindex:"-1"},z=n("code",null,"Sync::forceSync()",-1),L=n("a",{class:"header-anchor",href:"#sync-forcesync-blocking","aria-hidden":"true"},"#",-1),F=n("p",null,[s("\u540C\u6B65 sync \u5B9E\u4F8B\u4E2D\u5DF2\u7ECF\u5B9A\u4E49\u7684\u6240\u6709 collection \u5230\u6570\u636E\u5E93\u4E2D, \u6BCF\u4E2A\u8868\u5728\u540C\u6B65\u7684\u65F6\u5019\u90FD\u91C7\u53D6\u7684\u540C\u6B65\u7B56\u7565\u5747\u4E3A "),n("code",null,"'hard'"),s(", \u53C2\u8003"),n("a",{href:"#%E5%AD%97%E6%AE%B5%E5%90%8C%E6%AD%A5%E7%AD%96%E7%95%A5"},"\u5B57\u6BB5\u540C\u6B65\u7B56\u7565"),s(".")],-1),$={id:"sync-forcesync-cb-function-non-blocking",tabindex:"-1"},M=n("code",null,"Sync::forceSync(cb: Function)",-1),Q=n("a",{class:"header-anchor",href:"#sync-forcesync-cb-function-non-blocking","aria-hidden":"true"},"#",-1),R=o("",14);function O(U,G,X,H,J,K){const e=l("Badge");return r(),p("div",null,[d,n("h3",u,[y,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),k]),h,n("h3",g,[_,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),b]),f,n("h3",m,[q,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),j]),S,n("h3",v,[x,s(),a(e,{type:"warning"},{default:t(()=>[s("readonly")]),_:1}),s(),w]),D,n("h3",A,[E,s(),a(e,{type:"info"},{default:t(()=>[s("blocking")]),_:1}),s(),C]),T,n("h3",B,[N,s(),a(e,{type:"info"},{default:t(()=>[s("non-blocking")]),_:1}),s(),V]),P,n("h3",I,[z,s(),a(e,{type:"info"},{default:t(()=>[s("blocking")]),_:1}),s(),L]),F,n("h3",$,[M,s(),a(e,{type:"info"},{default:t(()=>[s("non-blocking")]),_:1}),s(),Q]),R])}var Z=c(i,[["render",O]]);export{Y as __pageData,Z as default};
diff --git a/assets/orm-packages_sql-query.md.f76b2968.js b/assets/orm-packages_sql-query.md.f20cbc69.js
similarity index 99%
rename from assets/orm-packages_sql-query.md.f76b2968.js
rename to assets/orm-packages_sql-query.md.f20cbc69.js
index 7958539c..067d62e4 100644
--- a/assets/orm-packages_sql-query.md.f76b2968.js
+++ b/assets/orm-packages_sql-query.md.f20cbc69.js
@@ -1,4 +1,4 @@
-import{_ as o,z as c,A as n,I as s,O as t,V as e,X as p,T as l,D as u}from"./plugin-vue_export-helper.1f71b9e3.js";const D='{"title":"@fxjs/sql-query","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Query","slug":"query"},{"level":3,"title":"new Query::Query(opts: object)","slug":"new-query-query-opts-object"},{"level":3,"title":"Query::knex","slug":"query-knex-readonly"},{"level":3,"title":"Query::Dialect","slug":"query-dialect-readonly"},{"level":3,"title":"Query::escape(sql, args)","slug":"query-escape-sql-args"},{"level":3,"title":"Query::escapeId(...els)","slug":"query-escapeid-els"},{"level":3,"title":"Query::escapeVal(val, timezone?)","slug":"query-escapeval-val-timezone"},{"level":3,"title":"Query::create()","slug":"query-create"},{"level":3,"title":"Query::select()","slug":"query-select"},{"level":3,"title":"Query::insert()","slug":"query-insert"},{"level":3,"title":"Query::update()","slug":"query-update"},{"level":3,"title":"Query::remove()","slug":"query-remove"},{"level":2,"title":"comparators","slug":"comparators"}],"relativePath":"orm-packages/sql-query.md","lastUpdated":1715603494724}',r={},i={id:"fxjs-sql-query-wip",tabindex:"-1"},k=n("code",null,"@fxjs/sql-query",-1),d=n("a",{class:"header-anchor",href:"#fxjs-sql-query-wip","aria-hidden":"true"},"#",-1),y=p('

NPM version\xA0 NPM download\xA0 NPM download monthly

sql-query, \u7528\u4E8E\u751F\u6210\u53EF\u5B8C\u6210\u7279\u5B9A\u64CD\u4F5C\u7684 query sql, \u662F\u4E00\u4E2A\u7EAF\u7CB9\u7684\u5B57\u7B26\u4E32\u62FC\u63A5\u5DE5\u5177. \u5B83\u63D0\u4F9B\u7684\u80FD\u529B\u53EF\u4EE5\u5E2E\u52A9\u5F00\u53D1\u8005\u7B80\u5316 SQL \u6D41\u7A0B:

  • \u57FA\u4E8E Query \u5BF9\u8C61, \u5BF9 SQL \u8BED\u53E5, SQL Identifier, SQL Value \u8FDB\u884C escape
  • \u57FA\u4E8E Query \u5BF9\u8C61, \u63D0\u4F9B\u4E86\u94FE\u5F0F\u6784\u9020\u5668(ChainBuilder), \u4EE5\u751F\u6210\u6EE1\u8DB3\u57FA\u672C\u4EA4\u4E92\u9700\u6C42\u7684\u8BED\u53E5
    • create: \u751F\u6210\u4E00\u4E2A table
    • select: \u4ECE table \u4E2D\u67E5\u8BE2\u6570\u636E
    • insert: \u5411 table \u4E2D\u63D2\u5165\u6570\u636E
    • update: \u66F4\u65B0 table \u4E2D\u7684\u6570\u636E
    • remove: \u6309\u7167\u4E00\u5B9A\u7684\u6761\u4EF6\u5220\u9664 table \u4E2D\u7684\u6570\u636E
  • Query \u4E0A\u7684 knex \u5BF9\u8C61, \u6EE1\u8DB3\u5F00\u53D1\u8005\u7075\u6D3B\u7684\u5B9A\u5236 SQL \u9700\u6C42

\u652F\u6301\u7684\u6570\u636E\u5E93 dialect \u6709:

  • mysql
  • sqlite
  • postgresql

\u5FEB\u901F\u5F00\u59CB

\u4F7F\u7528 sql-query \u4EE5\u6784\u9020\u7528\u4E8E\u751F\u6210\u540D\u4E3A table1 \u8868\u7684 SQL.

const { Query }   = require("@fxjs/query");\n\nconst query = new Query({ dialect: 'mysql' });\n\nquery.create().table('table1').fields({id: 'id', a_text: 'text'}).build()\n// => "create table `table1` (`id` int unsigned not null auto_increment primary key, `a_text` text)"\n

Query

new Query::Query(opts: object)

  • opts.dialect: (required) \u76EE\u6807\u6570\u636E\u5E93\u7C7B\u578B, \u652F\u6301 mysql, sqlite, postgresql.
',11),q={id:"query-knex-readonly",tabindex:"-1"},g=n("code",null,"Query::knex",-1),m=n("a",{class:"header-anchor",href:"#query-knex-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"knex \u7684\u5B9E\u4F8B.",-1),f={id:"query-dialect-readonly",tabindex:"-1"},w=n("code",null,"Query::Dialect",-1),b=n("a",{class:"header-anchor",href:"#query-dialect-readonly","aria-hidden":"true"},"#",-1),_=p(`

Dialect \u7684\u5B9E\u4F8B. Dialect \u4E0A\u5305\u542B\u4E86\u9002\u7528\u4E8E\u7279\u5B9A\u6570\u636E\u5E93\u7684 escape*, value \u8F6C\u6362, \u65F6\u533A\u8F6C\u6362\u7B49\u529F\u80FD. \u60F3\u4E86\u89E3\u66F4\u591A\u5173\u4E8E\u4E0D\u540C\u7684 Dialect \u7684\u4FE1\u606F, \u53EF\u53C2\u8003\u6D4B\u8BD5\u7528\u4F8B:

Query::escape(sql, args)

signature Query::escape(sql: string, values: any[])

\u8F6C\u4E49 sql \u8BED\u53E5\u4E2D\u7684\u5360\u4F4D\u7B26, \u5305\u62EC:

  • ?, \u5F53\u4F5C sql \u4E2D\u7684 value \u6765\u8F6C\u4E49
  • ??, \u5F53\u4F5C sql \u4E2D\u7684 identifier \u6765\u8F6C\u4E49

\u5982\u4E0B, \u4EE5 escape mysql \u8BED\u53E5\u4E3A\u4F8B

const { Query } = require("@fxjs/query");
+import{_ as o,z as c,A as n,I as s,O as t,V as e,X as p,T as l,D as u}from"./plugin-vue_export-helper.1f71b9e3.js";const D='{"title":"@fxjs/sql-query","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Query","slug":"query"},{"level":3,"title":"new Query::Query(opts: object)","slug":"new-query-query-opts-object"},{"level":3,"title":"Query::knex","slug":"query-knex-readonly"},{"level":3,"title":"Query::Dialect","slug":"query-dialect-readonly"},{"level":3,"title":"Query::escape(sql, args)","slug":"query-escape-sql-args"},{"level":3,"title":"Query::escapeId(...els)","slug":"query-escapeid-els"},{"level":3,"title":"Query::escapeVal(val, timezone?)","slug":"query-escapeval-val-timezone"},{"level":3,"title":"Query::create()","slug":"query-create"},{"level":3,"title":"Query::select()","slug":"query-select"},{"level":3,"title":"Query::insert()","slug":"query-insert"},{"level":3,"title":"Query::update()","slug":"query-update"},{"level":3,"title":"Query::remove()","slug":"query-remove"},{"level":2,"title":"comparators","slug":"comparators"}],"relativePath":"orm-packages/sql-query.md","lastUpdated":1715847568873}',r={},i={id:"fxjs-sql-query-wip",tabindex:"-1"},k=n("code",null,"@fxjs/sql-query",-1),d=n("a",{class:"header-anchor",href:"#fxjs-sql-query-wip","aria-hidden":"true"},"#",-1),y=p('

NPM version\xA0 NPM download\xA0 NPM download monthly

sql-query, \u7528\u4E8E\u751F\u6210\u53EF\u5B8C\u6210\u7279\u5B9A\u64CD\u4F5C\u7684 query sql, \u662F\u4E00\u4E2A\u7EAF\u7CB9\u7684\u5B57\u7B26\u4E32\u62FC\u63A5\u5DE5\u5177. \u5B83\u63D0\u4F9B\u7684\u80FD\u529B\u53EF\u4EE5\u5E2E\u52A9\u5F00\u53D1\u8005\u7B80\u5316 SQL \u6D41\u7A0B:

  • \u57FA\u4E8E Query \u5BF9\u8C61, \u5BF9 SQL \u8BED\u53E5, SQL Identifier, SQL Value \u8FDB\u884C escape
  • \u57FA\u4E8E Query \u5BF9\u8C61, \u63D0\u4F9B\u4E86\u94FE\u5F0F\u6784\u9020\u5668(ChainBuilder), \u4EE5\u751F\u6210\u6EE1\u8DB3\u57FA\u672C\u4EA4\u4E92\u9700\u6C42\u7684\u8BED\u53E5
    • create: \u751F\u6210\u4E00\u4E2A table
    • select: \u4ECE table \u4E2D\u67E5\u8BE2\u6570\u636E
    • insert: \u5411 table \u4E2D\u63D2\u5165\u6570\u636E
    • update: \u66F4\u65B0 table \u4E2D\u7684\u6570\u636E
    • remove: \u6309\u7167\u4E00\u5B9A\u7684\u6761\u4EF6\u5220\u9664 table \u4E2D\u7684\u6570\u636E
  • Query \u4E0A\u7684 knex \u5BF9\u8C61, \u6EE1\u8DB3\u5F00\u53D1\u8005\u7075\u6D3B\u7684\u5B9A\u5236 SQL \u9700\u6C42

\u652F\u6301\u7684\u6570\u636E\u5E93 dialect \u6709:

  • mysql
  • sqlite
  • postgresql

\u5FEB\u901F\u5F00\u59CB

\u4F7F\u7528 sql-query \u4EE5\u6784\u9020\u7528\u4E8E\u751F\u6210\u540D\u4E3A table1 \u8868\u7684 SQL.

const { Query }   = require("@fxjs/query");\n\nconst query = new Query({ dialect: 'mysql' });\n\nquery.create().table('table1').fields({id: 'id', a_text: 'text'}).build()\n// => "create table `table1` (`id` int unsigned not null auto_increment primary key, `a_text` text)"\n

Query

new Query::Query(opts: object)

  • opts.dialect: (required) \u76EE\u6807\u6570\u636E\u5E93\u7C7B\u578B, \u652F\u6301 mysql, sqlite, postgresql.
',11),q={id:"query-knex-readonly",tabindex:"-1"},g=n("code",null,"Query::knex",-1),m=n("a",{class:"header-anchor",href:"#query-knex-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"knex \u7684\u5B9E\u4F8B.",-1),f={id:"query-dialect-readonly",tabindex:"-1"},w=n("code",null,"Query::Dialect",-1),b=n("a",{class:"header-anchor",href:"#query-dialect-readonly","aria-hidden":"true"},"#",-1),_=p(`

Dialect \u7684\u5B9E\u4F8B. Dialect \u4E0A\u5305\u542B\u4E86\u9002\u7528\u4E8E\u7279\u5B9A\u6570\u636E\u5E93\u7684 escape*, value \u8F6C\u6362, \u65F6\u533A\u8F6C\u6362\u7B49\u529F\u80FD. \u60F3\u4E86\u89E3\u66F4\u591A\u5173\u4E8E\u4E0D\u540C\u7684 Dialect \u7684\u4FE1\u606F, \u53EF\u53C2\u8003\u6D4B\u8BD5\u7528\u4F8B:

Query::escape(sql, args)

signature Query::escape(sql: string, values: any[])

\u8F6C\u4E49 sql \u8BED\u53E5\u4E2D\u7684\u5360\u4F4D\u7B26, \u5305\u62EC:

  • ?, \u5F53\u4F5C sql \u4E2D\u7684 value \u6765\u8F6C\u4E49
  • ??, \u5F53\u4F5C sql \u4E2D\u7684 identifier \u6765\u8F6C\u4E49

\u5982\u4E0B, \u4EE5 escape mysql \u8BED\u53E5\u4E3A\u4F8B

const { Query } = require("@fxjs/query");
 const query = new Query({ dialect: 'mysql' });
 
 query.escape(\`select * from ?? where user_id = ?\`, [ 'user', 1 ]);
diff --git a/assets/orm-packages_sql-query.md.f76b2968.lean.js b/assets/orm-packages_sql-query.md.f20cbc69.lean.js
similarity index 97%
rename from assets/orm-packages_sql-query.md.f76b2968.lean.js
rename to assets/orm-packages_sql-query.md.f20cbc69.lean.js
index 29eb0add..8b270c4f 100644
--- a/assets/orm-packages_sql-query.md.f76b2968.lean.js
+++ b/assets/orm-packages_sql-query.md.f20cbc69.lean.js
@@ -1 +1 @@
-import{_ as o,z as c,A as n,I as s,O as t,V as e,X as p,T as l,D as u}from"./plugin-vue_export-helper.1f71b9e3.js";const D='{"title":"@fxjs/sql-query","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Query","slug":"query"},{"level":3,"title":"new Query::Query(opts: object)","slug":"new-query-query-opts-object"},{"level":3,"title":"Query::knex","slug":"query-knex-readonly"},{"level":3,"title":"Query::Dialect","slug":"query-dialect-readonly"},{"level":3,"title":"Query::escape(sql, args)","slug":"query-escape-sql-args"},{"level":3,"title":"Query::escapeId(...els)","slug":"query-escapeid-els"},{"level":3,"title":"Query::escapeVal(val, timezone?)","slug":"query-escapeval-val-timezone"},{"level":3,"title":"Query::create()","slug":"query-create"},{"level":3,"title":"Query::select()","slug":"query-select"},{"level":3,"title":"Query::insert()","slug":"query-insert"},{"level":3,"title":"Query::update()","slug":"query-update"},{"level":3,"title":"Query::remove()","slug":"query-remove"},{"level":2,"title":"comparators","slug":"comparators"}],"relativePath":"orm-packages/sql-query.md","lastUpdated":1715603494724}',r={},i={id:"fxjs-sql-query-wip",tabindex:"-1"},k=n("code",null,"@fxjs/sql-query",-1),d=n("a",{class:"header-anchor",href:"#fxjs-sql-query-wip","aria-hidden":"true"},"#",-1),y=p("",11),q={id:"query-knex-readonly",tabindex:"-1"},g=n("code",null,"Query::knex",-1),m=n("a",{class:"header-anchor",href:"#query-knex-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"knex \u7684\u5B9E\u4F8B.",-1),f={id:"query-dialect-readonly",tabindex:"-1"},w=n("code",null,"Query::Dialect",-1),b=n("a",{class:"header-anchor",href:"#query-dialect-readonly","aria-hidden":"true"},"#",-1),_=p("",39);function x(j,Q,v,T,V,N){const a=l("Badge");return u(),c("div",null,[n("h1",i,[k,s(),t(a,{type:"warning"},{default:e(()=>[s("WIP")]),_:1}),s(),d]),y,n("h3",q,[g,s(),t(a,{type:"warning"},{default:e(()=>[s("readonly")]),_:1}),s(),m]),h,n("h3",f,[w,s(),t(a,{type:"warning"},{default:e(()=>[s("readonly")]),_:1}),s(),b]),_])}var I=o(r,[["render",x]]);export{D as __pageData,I as default};
+import{_ as o,z as c,A as n,I as s,O as t,V as e,X as p,T as l,D as u}from"./plugin-vue_export-helper.1f71b9e3.js";const D='{"title":"@fxjs/sql-query","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5FEB\u901F\u5F00\u59CB","slug":"\u5FEB\u901F\u5F00\u59CB"},{"level":2,"title":"Query","slug":"query"},{"level":3,"title":"new Query::Query(opts: object)","slug":"new-query-query-opts-object"},{"level":3,"title":"Query::knex","slug":"query-knex-readonly"},{"level":3,"title":"Query::Dialect","slug":"query-dialect-readonly"},{"level":3,"title":"Query::escape(sql, args)","slug":"query-escape-sql-args"},{"level":3,"title":"Query::escapeId(...els)","slug":"query-escapeid-els"},{"level":3,"title":"Query::escapeVal(val, timezone?)","slug":"query-escapeval-val-timezone"},{"level":3,"title":"Query::create()","slug":"query-create"},{"level":3,"title":"Query::select()","slug":"query-select"},{"level":3,"title":"Query::insert()","slug":"query-insert"},{"level":3,"title":"Query::update()","slug":"query-update"},{"level":3,"title":"Query::remove()","slug":"query-remove"},{"level":2,"title":"comparators","slug":"comparators"}],"relativePath":"orm-packages/sql-query.md","lastUpdated":1715847568873}',r={},i={id:"fxjs-sql-query-wip",tabindex:"-1"},k=n("code",null,"@fxjs/sql-query",-1),d=n("a",{class:"header-anchor",href:"#fxjs-sql-query-wip","aria-hidden":"true"},"#",-1),y=p("",11),q={id:"query-knex-readonly",tabindex:"-1"},g=n("code",null,"Query::knex",-1),m=n("a",{class:"header-anchor",href:"#query-knex-readonly","aria-hidden":"true"},"#",-1),h=n("p",null,"knex \u7684\u5B9E\u4F8B.",-1),f={id:"query-dialect-readonly",tabindex:"-1"},w=n("code",null,"Query::Dialect",-1),b=n("a",{class:"header-anchor",href:"#query-dialect-readonly","aria-hidden":"true"},"#",-1),_=p("",39);function x(j,Q,v,T,V,N){const a=l("Badge");return u(),c("div",null,[n("h1",i,[k,s(),t(a,{type:"warning"},{default:e(()=>[s("WIP")]),_:1}),s(),d]),y,n("h3",q,[g,s(),t(a,{type:"warning"},{default:e(()=>[s("readonly")]),_:1}),s(),m]),h,n("h3",f,[w,s(),t(a,{type:"warning"},{default:e(()=>[s("readonly")]),_:1}),s(),b]),_])}var I=o(r,[["render",x]]);export{D as __pageData,I as default};
diff --git a/assets/orm_Adapters.md.ace70fc9.js b/assets/orm_Adapters.md.1b34cce8.js
similarity index 96%
rename from assets/orm_Adapters.md.ace70fc9.js
rename to assets/orm_Adapters.md.1b34cce8.js
index 696cbc64..1469b960 100644
--- a/assets/orm_Adapters.md.ace70fc9.js
+++ b/assets/orm_Adapters.md.1b34cce8.js
@@ -1,4 +1,4 @@
-import{_ as n,z as a,D as s,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"Adapters","description":"","frontmatter":{},"headers":[],"relativePath":"orm/Adapters.md","lastUpdated":1715603494724}',e={},p=t(`

Adapters

ORM \u5185\u7F6E\u4E86\u5BF9\u90E8\u5206\u6570\u636E\u5E93\u7684\u652F\u6301. \u800C\u901A\u8FC7\u63D0\u4F9B\u4E00\u4E2A\u9002\u914D\u5668, \u53EF\u4EE5\u8BA9 ORM \u5728\u4E0D\u540C\u7684\u6570\u636E\u5E93\u4E0A\u8FD0\u884C.

require('@fxjs/orm').addAdapter('customdb', {
+import{_ as n,z as a,D as s,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"Adapters","description":"","frontmatter":{},"headers":[],"relativePath":"orm/Adapters.md","lastUpdated":1715847568873}',e={},p=t(`

Adapters

ORM \u5185\u7F6E\u4E86\u5BF9\u90E8\u5206\u6570\u636E\u5E93\u7684\u652F\u6301. \u800C\u901A\u8FC7\u63D0\u4F9B\u4E00\u4E2A\u9002\u914D\u5668, \u53EF\u4EE5\u8BA9 ORM \u5728\u4E0D\u540C\u7684\u6570\u636E\u5E93\u4E0A\u8FD0\u884C.

require('@fxjs/orm').addAdapter('customdb', {
   // ...
 });
 

\u9002\u914D\u5668\u7684\u63A5\u53E3\u5982\u4E0B:

interface IAdatper {
diff --git a/assets/orm_Adapters.md.ace70fc9.lean.js b/assets/orm_Adapters.md.1b34cce8.lean.js
similarity index 81%
rename from assets/orm_Adapters.md.ace70fc9.lean.js
rename to assets/orm_Adapters.md.1b34cce8.lean.js
index 1c908c69..cf236f15 100644
--- a/assets/orm_Adapters.md.ace70fc9.lean.js
+++ b/assets/orm_Adapters.md.1b34cce8.lean.js
@@ -1 +1 @@
-import{_ as n,z as a,D as s,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"Adapters","description":"","frontmatter":{},"headers":[],"relativePath":"orm/Adapters.md","lastUpdated":1715603494724}',e={},p=t("",5),o=[p];function c(r,i,d,l,u,_){return s(),a("div",null,o)}var f=n(e,[["render",c]]);export{m as __pageData,f as default};
+import{_ as n,z as a,D as s,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"Adapters","description":"","frontmatter":{},"headers":[],"relativePath":"orm/Adapters.md","lastUpdated":1715847568873}',e={},p=t("",5),o=[p];function c(r,i,d,l,u,_){return s(),a("div",null,o)}var f=n(e,[["render",c]]);export{m as __pageData,f as default};
diff --git a/assets/orm_connect-db.md.e5478ae3.js b/assets/orm_connect-db.md.0457fcf2.js
similarity index 93%
rename from assets/orm_connect-db.md.e5478ae3.js
rename to assets/orm_connect-db.md.0457fcf2.js
index 867c2b59..f786ee81 100644
--- a/assets/orm_connect-db.md.e5478ae3.js
+++ b/assets/orm_connect-db.md.0457fcf2.js
@@ -1 +1 @@
-import{_ as a,z as n,D as o,A as e,I as t}from"./plugin-vue_export-helper.1f71b9e3.js";const v='{"title":"\u8FDE\u63A5\u5230\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u8FDE\u63A5","slug":"\u8FDE\u63A5"}],"relativePath":"orm/connect-db.md","lastUpdated":1715603494724}',s={},r=e("h1",{id:"\u8FDE\u63A5\u5230\u6570\u636E\u5E93",tabindex:"-1"},[t("\u8FDE\u63A5\u5230\u6570\u636E\u5E93 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5\u5230\u6570\u636E\u5E93","aria-hidden":"true"},"#")],-1),l=e("p",null,[e("code",null,"@fxjs/orm"),t(" \u652F\u6301\u7684\u6570\u636E\u5E93\u6709")],-1),c=e("ul",null,[e("li",null,"MySQL/MariaDB"),e("li",null,"SQLite"),e("li",null,"PostgreSQL (\u652F\u6301\u4E2D)")],-1),d=e("h2",{id:"\u8FDE\u63A5",tabindex:"-1"},[t("\u8FDE\u63A5 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5","aria-hidden":"true"},"#")],-1),i=[r,l,c,d];function _(h,u,p,f,m,x){return o(),n("div",null,i)}var B=a(s,[["render",_]]);export{v as __pageData,B as default};
+import{_ as a,z as n,D as o,A as e,I as t}from"./plugin-vue_export-helper.1f71b9e3.js";const v='{"title":"\u8FDE\u63A5\u5230\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u8FDE\u63A5","slug":"\u8FDE\u63A5"}],"relativePath":"orm/connect-db.md","lastUpdated":1715847568873}',s={},r=e("h1",{id:"\u8FDE\u63A5\u5230\u6570\u636E\u5E93",tabindex:"-1"},[t("\u8FDE\u63A5\u5230\u6570\u636E\u5E93 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5\u5230\u6570\u636E\u5E93","aria-hidden":"true"},"#")],-1),l=e("p",null,[e("code",null,"@fxjs/orm"),t(" \u652F\u6301\u7684\u6570\u636E\u5E93\u6709")],-1),c=e("ul",null,[e("li",null,"MySQL/MariaDB"),e("li",null,"SQLite"),e("li",null,"PostgreSQL (\u652F\u6301\u4E2D)")],-1),d=e("h2",{id:"\u8FDE\u63A5",tabindex:"-1"},[t("\u8FDE\u63A5 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5","aria-hidden":"true"},"#")],-1),i=[r,l,c,d];function _(h,u,p,f,m,x){return o(),n("div",null,i)}var B=a(s,[["render",_]]);export{v as __pageData,B as default};
diff --git a/assets/orm_connect-db.md.e5478ae3.lean.js b/assets/orm_connect-db.md.0457fcf2.lean.js
similarity index 93%
rename from assets/orm_connect-db.md.e5478ae3.lean.js
rename to assets/orm_connect-db.md.0457fcf2.lean.js
index 867c2b59..f786ee81 100644
--- a/assets/orm_connect-db.md.e5478ae3.lean.js
+++ b/assets/orm_connect-db.md.0457fcf2.lean.js
@@ -1 +1 @@
-import{_ as a,z as n,D as o,A as e,I as t}from"./plugin-vue_export-helper.1f71b9e3.js";const v='{"title":"\u8FDE\u63A5\u5230\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u8FDE\u63A5","slug":"\u8FDE\u63A5"}],"relativePath":"orm/connect-db.md","lastUpdated":1715603494724}',s={},r=e("h1",{id:"\u8FDE\u63A5\u5230\u6570\u636E\u5E93",tabindex:"-1"},[t("\u8FDE\u63A5\u5230\u6570\u636E\u5E93 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5\u5230\u6570\u636E\u5E93","aria-hidden":"true"},"#")],-1),l=e("p",null,[e("code",null,"@fxjs/orm"),t(" \u652F\u6301\u7684\u6570\u636E\u5E93\u6709")],-1),c=e("ul",null,[e("li",null,"MySQL/MariaDB"),e("li",null,"SQLite"),e("li",null,"PostgreSQL (\u652F\u6301\u4E2D)")],-1),d=e("h2",{id:"\u8FDE\u63A5",tabindex:"-1"},[t("\u8FDE\u63A5 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5","aria-hidden":"true"},"#")],-1),i=[r,l,c,d];function _(h,u,p,f,m,x){return o(),n("div",null,i)}var B=a(s,[["render",_]]);export{v as __pageData,B as default};
+import{_ as a,z as n,D as o,A as e,I as t}from"./plugin-vue_export-helper.1f71b9e3.js";const v='{"title":"\u8FDE\u63A5\u5230\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u8FDE\u63A5","slug":"\u8FDE\u63A5"}],"relativePath":"orm/connect-db.md","lastUpdated":1715847568873}',s={},r=e("h1",{id:"\u8FDE\u63A5\u5230\u6570\u636E\u5E93",tabindex:"-1"},[t("\u8FDE\u63A5\u5230\u6570\u636E\u5E93 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5\u5230\u6570\u636E\u5E93","aria-hidden":"true"},"#")],-1),l=e("p",null,[e("code",null,"@fxjs/orm"),t(" \u652F\u6301\u7684\u6570\u636E\u5E93\u6709")],-1),c=e("ul",null,[e("li",null,"MySQL/MariaDB"),e("li",null,"SQLite"),e("li",null,"PostgreSQL (\u652F\u6301\u4E2D)")],-1),d=e("h2",{id:"\u8FDE\u63A5",tabindex:"-1"},[t("\u8FDE\u63A5 "),e("a",{class:"header-anchor",href:"#\u8FDE\u63A5","aria-hidden":"true"},"#")],-1),i=[r,l,c,d];function _(h,u,p,f,m,x){return o(),n("div",null,i)}var B=a(s,[["render",_]]);export{v as __pageData,B as default};
diff --git a/assets/orm_getting-started.md.9cc67bea.js b/assets/orm_getting-started.md.c1820566.js
similarity index 99%
rename from assets/orm_getting-started.md.9cc67bea.js
rename to assets/orm_getting-started.md.c1820566.js
index faaf6f69..4c810aad 100644
--- a/assets/orm_getting-started.md.9cc67bea.js
+++ b/assets/orm_getting-started.md.c1820566.js
@@ -1,4 +1,4 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6982\u5FF5","slug":"\u6982\u5FF5"},{"level":3,"title":"\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E","slug":"\u540C\u6B65\u963B\u585E-vs-\u5F02\u6B65\u975E\u963B\u585E"},{"level":2,"title":"TypeScript","slug":"typescript"}],"relativePath":"orm/getting-started.md","lastUpdated":1715603494724}',p={},o=t(`

\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93

\u53C2\u8003\u9996\u9875\u7684\u5FEB\u901F\u5F00\u59CB

\u6982\u5FF5

\u7B80\u5355\u8BA4\u8BC6\u4E86 orm \u8FDE\u63A5\u548C\u64CD\u4F5C\u6570\u636E\u5E93\u7684\u80FD\u529B\u540E, \u6211\u4EEC\u6765\u770B\u4E00\u4E9B\u5FC5\u8981\u4E86\u89E3\u7684\u6982\u5FF5

\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E

\u7279\u5F81blocking stylenon-blocking style
\u963B\u585E\u8FDB\u7A0BYESNO
\u9519\u8BEF\u5904\u7406\u76F4\u63A5 throw \u5230\u4E0A\u4E0B\u6587\u4E0D\u4F1A throw \u9519\u8BEF, \u7531 callback \u5904\u7406\u56DE\u8C03\u7684 err \u53C2\u6570

\u5728 @fxjs/orm \u4E2D, \u7EDD\u5927\u90E8\u5206\u548C\u6570\u636E\u5E93\u53D1\u751F\u4EA4\u4E92\u7684 API \u540C\u65F6\u5305\u542B\u4E86\u540C\u6B65(\u963B\u585E)\u548C\u5F02\u6B65(\u975E\u963B\u585E)\u7684\u7248\u672C.

orm \u9075\u5FAA\u4E86 fibjs \u8BBE\u8BA1\u4E2D\u7684\u7EA6\u5B9A: \u5047\u8BBE\u67D0\u4E2A\u5B58\u5728\u5B9E\u8D28\u4E0A\u5F02\u6B65\u884C\u4E3A\u7684 function API \u7684\u6838\u5FC3\u4E3A function Xxx(...args: any[], [, cb: (err, ret) => any]), \u5219

  • \u9ED8\u8BA4 Xxx \u662F blocking style, \u5F53\u4F20\u5165\u4E86\u6700\u540E\u7684 cb \u51FD\u6570\u65F6, \u5219 Xxx \u4F1A\u53D8\u6210 non-blocking style
  • function XxxSync(...args: any[]) \u4E00\u5B9A\u662F blocking style

\u6211\u4EEC\u4EE5 orm.connect \u8FD9\u4E2A\u6700\u5E38\u89C1\u7684 API \u4E3A\u4F8B, \u611F\u53D7\u4E00\u4E0B\u540C\u4E00 API \u7684\u963B\u585E\u548C\u975E\u963B\u585E\u7248\u672C\u7279\u5F81\u6709\u5982\u4E0B\u533A\u5206:

// blocking/synchronous version
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6982\u5FF5","slug":"\u6982\u5FF5"},{"level":3,"title":"\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E","slug":"\u540C\u6B65\u963B\u585E-vs-\u5F02\u6B65\u975E\u963B\u585E"},{"level":2,"title":"TypeScript","slug":"typescript"}],"relativePath":"orm/getting-started.md","lastUpdated":1715847568877}',p={},o=t(`

\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93

\u53C2\u8003\u9996\u9875\u7684\u5FEB\u901F\u5F00\u59CB

\u6982\u5FF5

\u7B80\u5355\u8BA4\u8BC6\u4E86 orm \u8FDE\u63A5\u548C\u64CD\u4F5C\u6570\u636E\u5E93\u7684\u80FD\u529B\u540E, \u6211\u4EEC\u6765\u770B\u4E00\u4E9B\u5FC5\u8981\u4E86\u89E3\u7684\u6982\u5FF5

\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E

\u7279\u5F81blocking stylenon-blocking style
\u963B\u585E\u8FDB\u7A0BYESNO
\u9519\u8BEF\u5904\u7406\u76F4\u63A5 throw \u5230\u4E0A\u4E0B\u6587\u4E0D\u4F1A throw \u9519\u8BEF, \u7531 callback \u5904\u7406\u56DE\u8C03\u7684 err \u53C2\u6570

\u5728 @fxjs/orm \u4E2D, \u7EDD\u5927\u90E8\u5206\u548C\u6570\u636E\u5E93\u53D1\u751F\u4EA4\u4E92\u7684 API \u540C\u65F6\u5305\u542B\u4E86\u540C\u6B65(\u963B\u585E)\u548C\u5F02\u6B65(\u975E\u963B\u585E)\u7684\u7248\u672C.

orm \u9075\u5FAA\u4E86 fibjs \u8BBE\u8BA1\u4E2D\u7684\u7EA6\u5B9A: \u5047\u8BBE\u67D0\u4E2A\u5B58\u5728\u5B9E\u8D28\u4E0A\u5F02\u6B65\u884C\u4E3A\u7684 function API \u7684\u6838\u5FC3\u4E3A function Xxx(...args: any[], [, cb: (err, ret) => any]), \u5219

  • \u9ED8\u8BA4 Xxx \u662F blocking style, \u5F53\u4F20\u5165\u4E86\u6700\u540E\u7684 cb \u51FD\u6570\u65F6, \u5219 Xxx \u4F1A\u53D8\u6210 non-blocking style
  • function XxxSync(...args: any[]) \u4E00\u5B9A\u662F blocking style

\u6211\u4EEC\u4EE5 orm.connect \u8FD9\u4E2A\u6700\u5E38\u89C1\u7684 API \u4E3A\u4F8B, \u611F\u53D7\u4E00\u4E0B\u540C\u4E00 API \u7684\u963B\u585E\u548C\u975E\u963B\u585E\u7248\u672C\u7279\u5F81\u6709\u5982\u4E0B\u533A\u5206:

// blocking/synchronous version
 var db = orm.connectSync(uri)
 // equivalent to:
 var db = orm.connect(uri)
diff --git a/assets/orm_getting-started.md.9cc67bea.lean.js b/assets/orm_getting-started.md.c1820566.lean.js
similarity index 90%
rename from assets/orm_getting-started.md.9cc67bea.lean.js
rename to assets/orm_getting-started.md.c1820566.lean.js
index dfa87150..ba8a3338 100644
--- a/assets/orm_getting-started.md.9cc67bea.lean.js
+++ b/assets/orm_getting-started.md.c1820566.lean.js
@@ -1 +1 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6982\u5FF5","slug":"\u6982\u5FF5"},{"level":3,"title":"\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E","slug":"\u540C\u6B65\u963B\u585E-vs-\u5F02\u6B65\u975E\u963B\u585E"},{"level":2,"title":"TypeScript","slug":"typescript"}],"relativePath":"orm/getting-started.md","lastUpdated":1715603494724}',p={},o=t("",16),e=[o];function c(r,l,i,u,k,d){return a(),s("div",null,e)}var m=n(p,[["render",c]]);export{h as __pageData,m as default};
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const h='{"title":"\u5F00\u59CB\u8FDE\u63A5\u4F60\u7684\u6570\u636E\u5E93","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6982\u5FF5","slug":"\u6982\u5FF5"},{"level":3,"title":"\u540C\u6B65\u963B\u585E vs \u5F02\u6B65\u975E\u963B\u585E","slug":"\u540C\u6B65\u963B\u585E-vs-\u5F02\u6B65\u975E\u963B\u585E"},{"level":2,"title":"TypeScript","slug":"typescript"}],"relativePath":"orm/getting-started.md","lastUpdated":1715847568877}',p={},o=t("",16),e=[o];function c(r,l,i,u,k,d){return a(),s("div",null,e)}var m=n(p,[["render",c]]);export{h as __pageData,m as default};
diff --git a/assets/orm_index.md.188dda7a.js b/assets/orm_index.md.2ca3cf87.js
similarity index 90%
rename from assets/orm_index.md.188dda7a.js
rename to assets/orm_index.md.2ca3cf87.js
index 1ccf4cab..2efbbf50 100644
--- a/assets/orm_index.md.188dda7a.js
+++ b/assets/orm_index.md.2ca3cf87.js
@@ -1 +1 @@
-import{_ as t,z as a,D as n,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"\u76EE\u5F55","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u76EE\u5F55","slug":"\u76EE\u5F55"}],"relativePath":"orm/index.md","lastUpdated":1715603494724}',s={},o=e("h2",{id:"\u76EE\u5F55",tabindex:"-1"},[r("\u76EE\u5F55 "),e("a",{class:"header-anchor",href:"#\u76EE\u5F55","aria-hidden":"true"},"#")],-1),d=e("ol",null,[e("li",null,[e("a",{href:"./getting-started.html"},"getting-started")]),e("li",null,[e("a",{href:"./connect-db.html"},"connect-db")])],-1),l=[o,d];function c(i,_,h,p,f,u){return n(),a("div",null,l)}var g=t(s,[["render",c]]);export{x as __pageData,g as default};
+import{_ as t,z as a,D as n,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"\u76EE\u5F55","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u76EE\u5F55","slug":"\u76EE\u5F55"}],"relativePath":"orm/index.md","lastUpdated":1715847568877}',s={},o=e("h2",{id:"\u76EE\u5F55",tabindex:"-1"},[r("\u76EE\u5F55 "),e("a",{class:"header-anchor",href:"#\u76EE\u5F55","aria-hidden":"true"},"#")],-1),d=e("ol",null,[e("li",null,[e("a",{href:"./getting-started.html"},"getting-started")]),e("li",null,[e("a",{href:"./connect-db.html"},"connect-db")])],-1),l=[o,d];function c(i,_,h,p,f,u){return n(),a("div",null,l)}var g=t(s,[["render",c]]);export{x as __pageData,g as default};
diff --git a/assets/orm_index.md.188dda7a.lean.js b/assets/orm_index.md.2ca3cf87.lean.js
similarity index 90%
rename from assets/orm_index.md.188dda7a.lean.js
rename to assets/orm_index.md.2ca3cf87.lean.js
index 1ccf4cab..2efbbf50 100644
--- a/assets/orm_index.md.188dda7a.lean.js
+++ b/assets/orm_index.md.2ca3cf87.lean.js
@@ -1 +1 @@
-import{_ as t,z as a,D as n,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"\u76EE\u5F55","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u76EE\u5F55","slug":"\u76EE\u5F55"}],"relativePath":"orm/index.md","lastUpdated":1715603494724}',s={},o=e("h2",{id:"\u76EE\u5F55",tabindex:"-1"},[r("\u76EE\u5F55 "),e("a",{class:"header-anchor",href:"#\u76EE\u5F55","aria-hidden":"true"},"#")],-1),d=e("ol",null,[e("li",null,[e("a",{href:"./getting-started.html"},"getting-started")]),e("li",null,[e("a",{href:"./connect-db.html"},"connect-db")])],-1),l=[o,d];function c(i,_,h,p,f,u){return n(),a("div",null,l)}var g=t(s,[["render",c]]);export{x as __pageData,g as default};
+import{_ as t,z as a,D as n,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"\u76EE\u5F55","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u76EE\u5F55","slug":"\u76EE\u5F55"}],"relativePath":"orm/index.md","lastUpdated":1715847568877}',s={},o=e("h2",{id:"\u76EE\u5F55",tabindex:"-1"},[r("\u76EE\u5F55 "),e("a",{class:"header-anchor",href:"#\u76EE\u5F55","aria-hidden":"true"},"#")],-1),d=e("ol",null,[e("li",null,[e("a",{href:"./getting-started.html"},"getting-started")]),e("li",null,[e("a",{href:"./connect-db.html"},"connect-db")])],-1),l=[o,d];function c(i,_,h,p,f,u){return n(),a("div",null,l)}var g=t(s,[["render",c]]);export{x as __pageData,g as default};
diff --git a/assets/orm_plugins.md.44550c04.js b/assets/orm_plugins.md.d5884768.js
similarity index 97%
rename from assets/orm_plugins.md.44550c04.js
rename to assets/orm_plugins.md.d5884768.js
index 0a92bd5a..23f06743 100644
--- a/assets/orm_plugins.md.44550c04.js
+++ b/assets/orm_plugins.md.d5884768.js
@@ -1,4 +1,4 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"ORM \u63D2\u4EF6","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6","slug":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6"}],"relativePath":"orm/plugins.md","lastUpdated":1715603494724}',p={},e=t(`

ORM \u63D2\u4EF6

\u901A\u8FC7\u7279\u5B9A\u7684\u94A9\u5B50(hook), \u63D2\u4EF6\u53EF\u4EE5\u5BF9 orm \u5B9E\u4F8B, model \u5BF9\u8C61, instance \u8FDB\u884C\u5B9A\u5236.

\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6

const { definePlugin } = require('@fxjs/orm');
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"ORM \u63D2\u4EF6","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6","slug":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6"}],"relativePath":"orm/plugins.md","lastUpdated":1715847568877}',p={},e=t(`

ORM \u63D2\u4EF6

\u901A\u8FC7\u7279\u5B9A\u7684\u94A9\u5B50(hook), \u63D2\u4EF6\u53EF\u4EE5\u5BF9 orm \u5B9E\u4F8B, model \u5BF9\u8C61, instance \u8FDB\u884C\u5B9A\u5236.

\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6

const { definePlugin } = require('@fxjs/orm');
 
 const plugin = definePlugin((orm, options) => {
     return {
diff --git a/assets/orm_plugins.md.44550c04.lean.js b/assets/orm_plugins.md.d5884768.lean.js
similarity index 87%
rename from assets/orm_plugins.md.44550c04.lean.js
rename to assets/orm_plugins.md.d5884768.lean.js
index 6f0f99e9..2950d711 100644
--- a/assets/orm_plugins.md.44550c04.lean.js
+++ b/assets/orm_plugins.md.d5884768.lean.js
@@ -1 +1 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"ORM \u63D2\u4EF6","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6","slug":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6"}],"relativePath":"orm/plugins.md","lastUpdated":1715603494724}',p={},e=t("",4),o=[e];function c(u,i,l,r,k,d){return a(),s("div",null,o)}var f=n(p,[["render",c]]);export{m as __pageData,f as default};
+import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const m='{"title":"ORM \u63D2\u4EF6","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6","slug":"\u5B9A\u4E49\u4E00\u4E2A\u7B80\u5355\u7684\u63D2\u4EF6"}],"relativePath":"orm/plugins.md","lastUpdated":1715847568877}',p={},e=t("",4),o=[e];function c(u,i,l,r,k,d){return a(),s("div",null,o)}var f=n(p,[["render",c]]);export{m as __pageData,f as default};
diff --git a/assets/orm_property.md.5d4952e8.js b/assets/orm_property.md.1e19e4fd.js
similarity index 96%
rename from assets/orm_property.md.5d4952e8.js
rename to assets/orm_property.md.1e19e4fd.js
index fd98d8f1..4bc7d21a 100644
--- a/assets/orm_property.md.5d4952e8.js
+++ b/assets/orm_property.md.1e19e4fd.js
@@ -1,4 +1,4 @@
-import{_ as e,z as t,A as a,I as n,O as p,V as o,X as r,T as c,D as l}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"Property","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u58F0\u660E Property","slug":"\u58F0\u660E-property"}],"relativePath":"orm/property.md","lastUpdated":1715603494724}',i={},d={id:"property-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#property-wip","aria-hidden":"true"},"#",-1),k=r(`

Property \u662F ORM \u4E2D\u5B9A\u4E49 model \u7684\u57FA\u7840\u5143\u7D20, \u4E00\u4E2A Property \u88AB\u8BA4\u4E3A\u662F\u5178\u578B\u7684\u6570\u636E\u5E93\u8868\u4E2D\u7684\u4E00\u4E2A\u5B57\u6BB5\u5728 model \u4E0A\u7684\u6620\u5C04.

\u58F0\u660E Property

\u5728\u521B\u5EFA\u4E00\u4E2A model \u65F6, \u58F0\u660E Property \u6700\u5FC5\u8981\u7684:

var User = db.define('user', {
+import{_ as e,z as t,A as a,I as n,O as p,V as o,X as r,T as c,D as l}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"Property","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u58F0\u660E Property","slug":"\u58F0\u660E-property"}],"relativePath":"orm/property.md","lastUpdated":1715847568877}',i={},d={id:"property-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#property-wip","aria-hidden":"true"},"#",-1),k=r(`

Property \u662F ORM \u4E2D\u5B9A\u4E49 model \u7684\u57FA\u7840\u5143\u7D20, \u4E00\u4E2A Property \u88AB\u8BA4\u4E3A\u662F\u5178\u578B\u7684\u6570\u636E\u5E93\u8868\u4E2D\u7684\u4E00\u4E2A\u5B57\u6BB5\u5728 model \u4E0A\u7684\u6620\u5C04.

\u58F0\u660E Property

\u5728\u521B\u5EFA\u4E00\u4E2A model \u65F6, \u58F0\u660E Property \u6700\u5FC5\u8981\u7684:

var User = db.define('user', {
     name: String
 });
 

\u6211\u4EEC\u58F0\u660E\u4E86\u4E00\u4E2A\u540D\u4E3A name \u7684 Property, \u5176\u7C7B\u578B\u4E3A String, \u5B83\u7B49\u4EF7\u4E8E\u8FD9\u6837\u7684\u5B9A\u4E49:

var User = db.define('user', {
diff --git a/assets/orm_property.md.5d4952e8.lean.js b/assets/orm_property.md.1e19e4fd.lean.js
similarity index 81%
rename from assets/orm_property.md.5d4952e8.lean.js
rename to assets/orm_property.md.1e19e4fd.lean.js
index d967d8e1..18e1bacb 100644
--- a/assets/orm_property.md.5d4952e8.lean.js
+++ b/assets/orm_property.md.1e19e4fd.lean.js
@@ -1 +1 @@
-import{_ as e,z as t,A as a,I as n,O as p,V as o,X as r,T as c,D as l}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"Property","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u58F0\u660E Property","slug":"\u58F0\u660E-property"}],"relativePath":"orm/property.md","lastUpdated":1715603494724}',i={},d={id:"property-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#property-wip","aria-hidden":"true"},"#",-1),k=r("",8);function _(y,g,h,m,f,P){const s=c("Badge");return l(),t("div",null,[a("h1",d,[n("Property "),p(s,{type:"warning"},{default:o(()=>[n("WIP")]),_:1}),n(),u]),k])}var T=e(i,[["render",_]]);export{x as __pageData,T as default};
+import{_ as e,z as t,A as a,I as n,O as p,V as o,X as r,T as c,D as l}from"./plugin-vue_export-helper.1f71b9e3.js";const x='{"title":"Property","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u58F0\u660E Property","slug":"\u58F0\u660E-property"}],"relativePath":"orm/property.md","lastUpdated":1715847568877}',i={},d={id:"property-wip",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#property-wip","aria-hidden":"true"},"#",-1),k=r("",8);function _(y,g,h,m,f,P){const s=c("Badge");return l(),t("div",null,[a("h1",d,[n("Property "),p(s,{type:"warning"},{default:o(()=>[n("WIP")]),_:1}),n(),u]),k])}var T=e(i,[["render",_]]);export{x as __pageData,T as default};
diff --git a/assets/orm_virtual-view.md.b4bb53bd.js b/assets/orm_virtual-view.md.1ab68fe7.js
similarity index 99%
rename from assets/orm_virtual-view.md.b4bb53bd.js
rename to assets/orm_virtual-view.md.1ab68fe7.js
index 9c2f6f87..cd5094f9 100644
--- a/assets/orm_virtual-view.md.b4bb53bd.js
+++ b/assets/orm_virtual-view.md.1ab68fe7.js
@@ -1 +1 @@
-import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"\u865A\u62DF\u89C6\u56FE / virtualView","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6307\u5B9A\u67E5\u8BE2\u6E90","slug":"\u6307\u5B9A\u67E5\u8BE2\u6E90"},{"level":2,"title":"\u7279\u70B9","slug":"\u7279\u70B9"},{"level":3,"title":"\u4E0D\u53EF\u5199","slug":"\u4E0D\u53EF\u5199"},{"level":3,"title":"\u4F9D\u7136\u652F\u6301 ChainFind","slug":"\u4F9D\u7136\u652F\u6301-chainfind"},{"level":2,"title":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5","slug":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49-virutalview-\u8BED\u53E5"},{"level":3,"title":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B"},{"level":3,"title":"\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02","slug":"\u4F7F\u7528-knex-\u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02"},{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879"}],"relativePath":"orm/virtual-view.md","lastUpdated":1715603494724}',p={},o=t('

\u865A\u62DF\u89C6\u56FE / virtualView

ORM \u4E2D\u7684 model \u53EF\u4EE5\u662F\u865A\u62DF\u89C6\u56FE\uFF0C\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5B83\u4E0D\u662F\u771F\u5B9E\u7684\u6570\u636E\u8868\uFF0C\u800C\u662F\u4E00\u4E2A\u865A\u62DF\u7684\u6570\u636E\u8868\uFF0C\u5B83\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u7279\u5B9A\u7684\u65B9\u5F0F\u6765\u83B7\u53D6\u771F\u5B9E\u7684\u6570\u636E\u8868.

\u6307\u5B9A\u67E5\u8BE2\u6E90

\u8003\u8651\u6709\u4EE5\u4E0B\u4E1A\u52A1\u6A21\u578B, \u6211\u4EEC\u6709 class \u548C students_info \u4E24\u4E2A\u8868. \u9996\u5148, \u6211\u4EEC\u5BF9\u8FD9\u4E24\u4E2A\u8868\u5EFA\u6A21:

const Class = db.define("class", {\n    no: Number,\n    name: String\n}, {\n});\n\nconst StudentInfo = db.define("students_info", {\n    stu_no: Number,\n    class_no: Number,\n    gender: ['male', 'female'],\n    grade: Number,\n    height: Number,\n});\n

\u73B0\u5728, \u6211\u4EEC\u60F3\u901A\u8FC7\u4E00\u4E2A\u89C6\u56FE\u6765\u7EDF\u8BA1\u6BCF\u4E2A\u73ED\u7EA7\u7684\u5B66\u751F\u6570\u91CF, \u7537\u751F\u6570\u91CF, \u5E73\u5747\u6210\u7EE9\u548C\u5E73\u5747\u8EAB\u9AD8.

\u4EE5 mysql \u4E3A\u4F8B, \u6211\u4EEC\u9884\u671F\u901A\u8FC7\u4EE5\u4E0B\u67E5\u8BE2\u8BED\u53E5\u6765\u5F97\u5230\u8FD9\u4E2A\u89C6\u56FE:

select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`\n

\u4E3A\u6B64, \u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 virtualView \u6765\u5B9A\u4E49\u8FD9\u4E2A\u89C6\u56FE:

const StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)",\n});\n

\u5F53\u6267\u884C StudentInfoStatics.find().runSync() \u65F6, \u4F1A\u6267\u884C\u4E0A\u8FF0\u7684\u67E5\u8BE2\u8BED\u53E5, \u6700\u7EC8\u6211\u4EEC\u5B9E\u9645\u6267\u884C\u7684\u8BED\u53E5\u5982\u4E0B:

select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` limit 1000\n

\u53EF\u4EE5\u770B\u5230, \u6700\u7EC8\u751F\u6210\u7684\u8BED\u53E5\u5E76\u4E0D\u662F\u4ECE\u4E00\u4E2A\u771F\u5B9E\u7684\u6570\u636E\u8868\u4E2D\u67E5\u8BE2, \u800C\u662F\u5C06\u4E00\u4E2A select...as \u4F5C\u4E3A\u67E5\u8BE2\u6E90. \u8FD9\u6837, \u6211\u4EEC\u5C31\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u865A\u62DF\u89C6\u56FE\u6765\u7EDF\u8BA1\u6570\u636E\u4E86.

\u7279\u70B9

\u4E0D\u53EF\u5199

\u5F53\u4E00\u4E2A orm model \u88AB\u6307\u5B9A\u4E86 virtualView \u540E, \u5B83\u50CF\u53D8\u6210\u4E00\u4E2A\u7EAF\u7CB9\u7684 virtualView model, \u5176\u4E2D\u5B9A\u4E49\u7684\u6240\u6709 property \u90FD\u662F\u53EA\u53EF\u8BFB\u800C\u4E0D\u53EF\u4EE5\u5199\u7684, \u5E76\u4E00\u4E00\u6620\u5C04\u5230\u67E5\u8BE2\u6E90.

virtualView model \u5C31\u4E0D\u518D\u6620\u5C04\u5230\u4E00\u4E2A\u771F\u5B9E\u7684\u6570\u636E\u8868, \u56E0\u6B64, \u5B83\u4E0D\u652F\u6301\u5199\u5165\u7C7B\u64CD\u4F5C\u5982 create, update, remove \u7B49.

\u4F9D\u7136\u652F\u6301 ChainFind

model.find() \u4F1A\u8FD4\u56DE\u4E00\u4E2A ChainFind \u5BF9\u8C61, \u901A\u8FC7\u8FD9\u4E2A\u5BF9\u8C61, \u6211\u4EEC\u53EF\u4EE5\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u8FDB\u4E00\u6B65\u7684\u8FC7\u6EE4, \u6392\u5E8F, \u5206\u9875\u7B49\u64CD\u4F5C. \u8FD9\u4E00\u7279\u6027\u4F9D\u7136\u9002\u7528\u4E8E virtualView model.

\u4EE5\u4E0A\u6587\u7684 StudentInfoStatics \u4E3A\u4F8B, \u6211\u4EEC\u53EF\u4EE5\u6309\u7167\u5B66\u751F\u5E73\u5747\u6210\u7EE9\u5BF9\u7EDF\u8BA1\u4FE1\u606F\u8FDB\u884C\u964D\u5E8F\u6392\u5E8F:

StudentInfoStatics.find().order('-avg_grade').runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` order by `avg_grade` DESC limit 1000\n

\u6211\u4EEC\u4E5F\u53EF\u4EE5\u901A\u8FC7 limit \u548C offset \u6765\u5206\u9875:

StudentInfoStatics.find().limit(10).offset(10).runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` limit 10 offset 10\n

\u4E5F\u53EF\u4EE5\u901A\u8FC7 where \u6765\u8FC7\u6EE4:

StudentInfoStatics.find().where({ class_no: 1 }).runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` where `s_class_no` = 1 limit 1000\n

\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5

\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B

\u4F60\u7684 orm \u5B9A\u4E49\u53EF\u80FD\u662F\u8FD0\u884C\u5728\u4E0D\u540C\u6570\u636E\u5E93 backend \u4E0A\u7684, \u5728\u5B9A\u4E49 virtualView \u65F6, \u4F60\u53EF\u4EE5\u901A\u8FC7 db.driver.sqlDriver.type \u6765\u5224\u65AD\u5F53\u524D\u8FD0\u884C\u7684\u6570\u636E\u5E93\u7C7B\u578B, \u7136\u540E\u6839\u636E\u4E0D\u540C\u7684\u6570\u636E\u5E93\u7C7B\u578B\u6765\u5B9A\u4E49\u4E0D\u540C\u7684 virtualView \u8BED\u53E5. \u5982:

const StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: db.driver.sqlDriver.type === 'sqlite' ? "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)"\n    : db.driver.sqlDriver.type === 'mysql' ? "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)"\n    : db.driver.sqlDriver.type === 'psql' ? `(select "class_no" as "s_class_no", count(stu_no) as "students_count", count(gender) as "male_count", avg(grade) as "avg_grade", avg(height) as "avg_height" from "students_info" group by "class_no")`\n    : null,\n});\n

\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02

\u4F60\u4E5F\u53EF\u4EE5\u4F7F\u7528 db.driver.knex \u6765\u62B9\u5E73\u4E0D\u540C\u6570\u636E\u5E93\u7684\u5DEE\u5F02, \u5982:

const knex = db.driver.knex;\n\nconst StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: knex.table('students_info').select(\n        'class_no as s_class_no',\n        knex.raw('count(stu_no) as ??', ['students_count']),\n        knex.raw('count(gender) as ??', ['male_count']),\n        knex.raw('avg(grade) as ??', ['avg_grade']),\n        knex.raw('avg(height) as ??', ['avg_height']),\n    ).groupBy(['class_no'])\n});\n

\u6CE8\u610F \u6B64\u65F6\u4F20\u9012\u7ED9 virtualView \u7684\u53C2\u6570\u5FC5\u987B\u662F\u4E00\u4E2A knex \u5BF9\u8C61, \u800C\u4E0D\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32.

\u5173\u4E8E knex \u7684\u66F4\u591A\u7528\u6CD5, \u8BF7\u53C2\u8003 knex \u6587\u6863.

\u6CE8\u610F\u4E8B\u9879

  • virtualView \u4E2D\u7684\u8BED\u53E5\u4F1A\u88AB\u76F4\u63A5\u5F53\u505A\u67E5\u8BE2\u6E90, \u56E0\u6B64, \u8BF7\u786E\u4FDD virtualView \u4E2D\u7684\u8BED\u53E5\u662F\u6B63\u786E\u7684.
  • \u4F20\u7ED9 virtualView \u7684\u53C2\u6570\u5982\u679C\u662F\u5B57\u7B26\u4E32, \u5219\u5FC5\u987B\u88AB\u5F15\u53F7\u5305\u88F9, \u4F8B\u5982:
// correct\n{\n    virtualView: "(select * from `students_info` where `class_no` = '1')" \n}\n\n// incorrect\n{\n    virtualView: "select * from `students_info` where `class_no` = '1'"\n}\n
',37),e=[o];function c(l,u,r,i,k,d){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{_ as __pageData,y as default}; +import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"\u865A\u62DF\u89C6\u56FE / virtualView","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6307\u5B9A\u67E5\u8BE2\u6E90","slug":"\u6307\u5B9A\u67E5\u8BE2\u6E90"},{"level":2,"title":"\u7279\u70B9","slug":"\u7279\u70B9"},{"level":3,"title":"\u4E0D\u53EF\u5199","slug":"\u4E0D\u53EF\u5199"},{"level":3,"title":"\u4F9D\u7136\u652F\u6301 ChainFind","slug":"\u4F9D\u7136\u652F\u6301-chainfind"},{"level":2,"title":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5","slug":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49-virutalview-\u8BED\u53E5"},{"level":3,"title":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B"},{"level":3,"title":"\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02","slug":"\u4F7F\u7528-knex-\u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02"},{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879"}],"relativePath":"orm/virtual-view.md","lastUpdated":1715847568877}',p={},o=t('

\u865A\u62DF\u89C6\u56FE / virtualView

ORM \u4E2D\u7684 model \u53EF\u4EE5\u662F\u865A\u62DF\u89C6\u56FE\uFF0C\u4E5F\u5C31\u662F\u8BF4\uFF0C\u5B83\u4E0D\u662F\u771F\u5B9E\u7684\u6570\u636E\u8868\uFF0C\u800C\u662F\u4E00\u4E2A\u865A\u62DF\u7684\u6570\u636E\u8868\uFF0C\u5B83\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u7279\u5B9A\u7684\u65B9\u5F0F\u6765\u83B7\u53D6\u771F\u5B9E\u7684\u6570\u636E\u8868.

\u6307\u5B9A\u67E5\u8BE2\u6E90

\u8003\u8651\u6709\u4EE5\u4E0B\u4E1A\u52A1\u6A21\u578B, \u6211\u4EEC\u6709 class \u548C students_info \u4E24\u4E2A\u8868. \u9996\u5148, \u6211\u4EEC\u5BF9\u8FD9\u4E24\u4E2A\u8868\u5EFA\u6A21:

const Class = db.define("class", {\n    no: Number,\n    name: String\n}, {\n});\n\nconst StudentInfo = db.define("students_info", {\n    stu_no: Number,\n    class_no: Number,\n    gender: ['male', 'female'],\n    grade: Number,\n    height: Number,\n});\n

\u73B0\u5728, \u6211\u4EEC\u60F3\u901A\u8FC7\u4E00\u4E2A\u89C6\u56FE\u6765\u7EDF\u8BA1\u6BCF\u4E2A\u73ED\u7EA7\u7684\u5B66\u751F\u6570\u91CF, \u7537\u751F\u6570\u91CF, \u5E73\u5747\u6210\u7EE9\u548C\u5E73\u5747\u8EAB\u9AD8.

\u4EE5 mysql \u4E3A\u4F8B, \u6211\u4EEC\u9884\u671F\u901A\u8FC7\u4EE5\u4E0B\u67E5\u8BE2\u8BED\u53E5\u6765\u5F97\u5230\u8FD9\u4E2A\u89C6\u56FE:

select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`\n

\u4E3A\u6B64, \u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7 virtualView \u6765\u5B9A\u4E49\u8FD9\u4E2A\u89C6\u56FE:

const StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)",\n});\n

\u5F53\u6267\u884C StudentInfoStatics.find().runSync() \u65F6, \u4F1A\u6267\u884C\u4E0A\u8FF0\u7684\u67E5\u8BE2\u8BED\u53E5, \u6700\u7EC8\u6211\u4EEC\u5B9E\u9645\u6267\u884C\u7684\u8BED\u53E5\u5982\u4E0B:

select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` limit 1000\n

\u53EF\u4EE5\u770B\u5230, \u6700\u7EC8\u751F\u6210\u7684\u8BED\u53E5\u5E76\u4E0D\u662F\u4ECE\u4E00\u4E2A\u771F\u5B9E\u7684\u6570\u636E\u8868\u4E2D\u67E5\u8BE2, \u800C\u662F\u5C06\u4E00\u4E2A select...as \u4F5C\u4E3A\u67E5\u8BE2\u6E90. \u8FD9\u6837, \u6211\u4EEC\u5C31\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u865A\u62DF\u89C6\u56FE\u6765\u7EDF\u8BA1\u6570\u636E\u4E86.

\u7279\u70B9

\u4E0D\u53EF\u5199

\u5F53\u4E00\u4E2A orm model \u88AB\u6307\u5B9A\u4E86 virtualView \u540E, \u5B83\u50CF\u53D8\u6210\u4E00\u4E2A\u7EAF\u7CB9\u7684 virtualView model, \u5176\u4E2D\u5B9A\u4E49\u7684\u6240\u6709 property \u90FD\u662F\u53EA\u53EF\u8BFB\u800C\u4E0D\u53EF\u4EE5\u5199\u7684, \u5E76\u4E00\u4E00\u6620\u5C04\u5230\u67E5\u8BE2\u6E90.

virtualView model \u5C31\u4E0D\u518D\u6620\u5C04\u5230\u4E00\u4E2A\u771F\u5B9E\u7684\u6570\u636E\u8868, \u56E0\u6B64, \u5B83\u4E0D\u652F\u6301\u5199\u5165\u7C7B\u64CD\u4F5C\u5982 create, update, remove \u7B49.

\u4F9D\u7136\u652F\u6301 ChainFind

model.find() \u4F1A\u8FD4\u56DE\u4E00\u4E2A ChainFind \u5BF9\u8C61, \u901A\u8FC7\u8FD9\u4E2A\u5BF9\u8C61, \u6211\u4EEC\u53EF\u4EE5\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u8FDB\u4E00\u6B65\u7684\u8FC7\u6EE4, \u6392\u5E8F, \u5206\u9875\u7B49\u64CD\u4F5C. \u8FD9\u4E00\u7279\u6027\u4F9D\u7136\u9002\u7528\u4E8E virtualView model.

\u4EE5\u4E0A\u6587\u7684 StudentInfoStatics \u4E3A\u4F8B, \u6211\u4EEC\u53EF\u4EE5\u6309\u7167\u5B66\u751F\u5E73\u5747\u6210\u7EE9\u5BF9\u7EDF\u8BA1\u4FE1\u606F\u8FDB\u884C\u964D\u5E8F\u6392\u5E8F:

StudentInfoStatics.find().order('-avg_grade').runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` order by `avg_grade` DESC limit 1000\n

\u6211\u4EEC\u4E5F\u53EF\u4EE5\u901A\u8FC7 limit \u548C offset \u6765\u5206\u9875:

StudentInfoStatics.find().limit(10).offset(10).runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` limit 10 offset 10\n

\u4E5F\u53EF\u4EE5\u901A\u8FC7 where \u6765\u8FC7\u6EE4:

StudentInfoStatics.find().where({ class_no: 1 }).runSync()\n\n// select `s_class_no`, `students_count`, `male_count`, `avg_grade`, `avg_height` from (select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`) as `class_students_statics` where `s_class_no` = 1 limit 1000\n

\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5

\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B

\u4F60\u7684 orm \u5B9A\u4E49\u53EF\u80FD\u662F\u8FD0\u884C\u5728\u4E0D\u540C\u6570\u636E\u5E93 backend \u4E0A\u7684, \u5728\u5B9A\u4E49 virtualView \u65F6, \u4F60\u53EF\u4EE5\u901A\u8FC7 db.driver.sqlDriver.type \u6765\u5224\u65AD\u5F53\u524D\u8FD0\u884C\u7684\u6570\u636E\u5E93\u7C7B\u578B, \u7136\u540E\u6839\u636E\u4E0D\u540C\u7684\u6570\u636E\u5E93\u7C7B\u578B\u6765\u5B9A\u4E49\u4E0D\u540C\u7684 virtualView \u8BED\u53E5. \u5982:

const StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: db.driver.sqlDriver.type === 'sqlite' ? "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)"\n    : db.driver.sqlDriver.type === 'mysql' ? "(select `class_no` as `s_class_no`, count(stu_no) as `students_count`, count(gender) as `male_count`, avg(grade) as `avg_grade`, avg(height) as `avg_height` from `students_info` group by `class_no`)"\n    : db.driver.sqlDriver.type === 'psql' ? `(select "class_no" as "s_class_no", count(stu_no) as "students_count", count(gender) as "male_count", avg(grade) as "avg_grade", avg(height) as "avg_height" from "students_info" group by "class_no")`\n    : null,\n});\n

\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02

\u4F60\u4E5F\u53EF\u4EE5\u4F7F\u7528 db.driver.knex \u6765\u62B9\u5E73\u4E0D\u540C\u6570\u636E\u5E93\u7684\u5DEE\u5F02, \u5982:

const knex = db.driver.knex;\n\nconst StudentInfoStatics = db.define("class_students_statics", {\n    class_no: { type: 'integer', mapsTo: 's_class_no' },\n    students_count: { type: 'integer' },\n    male_count: { type: 'integer' },\n    avg_grade: { type: 'number' },\n    avg_height: { type: 'number' },\n}, {\n    virtualView: knex.table('students_info').select(\n        'class_no as s_class_no',\n        knex.raw('count(stu_no) as ??', ['students_count']),\n        knex.raw('count(gender) as ??', ['male_count']),\n        knex.raw('avg(grade) as ??', ['avg_grade']),\n        knex.raw('avg(height) as ??', ['avg_height']),\n    ).groupBy(['class_no'])\n});\n

\u6CE8\u610F \u6B64\u65F6\u4F20\u9012\u7ED9 virtualView \u7684\u53C2\u6570\u5FC5\u987B\u662F\u4E00\u4E2A knex \u5BF9\u8C61, \u800C\u4E0D\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32.

\u5173\u4E8E knex \u7684\u66F4\u591A\u7528\u6CD5, \u8BF7\u53C2\u8003 knex \u6587\u6863.

\u6CE8\u610F\u4E8B\u9879

  • virtualView \u4E2D\u7684\u8BED\u53E5\u4F1A\u88AB\u76F4\u63A5\u5F53\u505A\u67E5\u8BE2\u6E90, \u56E0\u6B64, \u8BF7\u786E\u4FDD virtualView \u4E2D\u7684\u8BED\u53E5\u662F\u6B63\u786E\u7684.
  • \u4F20\u7ED9 virtualView \u7684\u53C2\u6570\u5982\u679C\u662F\u5B57\u7B26\u4E32, \u5219\u5FC5\u987B\u88AB\u5F15\u53F7\u5305\u88F9, \u4F8B\u5982:
// correct\n{\n    virtualView: "(select * from `students_info` where `class_no` = '1')" \n}\n\n// incorrect\n{\n    virtualView: "select * from `students_info` where `class_no` = '1'"\n}\n
',37),e=[o];function c(l,u,r,i,k,d){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{_ as __pageData,y as default}; diff --git a/assets/orm_virtual-view.md.b4bb53bd.lean.js b/assets/orm_virtual-view.md.1ab68fe7.lean.js similarity index 94% rename from assets/orm_virtual-view.md.b4bb53bd.lean.js rename to assets/orm_virtual-view.md.1ab68fe7.lean.js index 388964f5..06615ce3 100644 --- a/assets/orm_virtual-view.md.b4bb53bd.lean.js +++ b/assets/orm_virtual-view.md.1ab68fe7.lean.js @@ -1 +1 @@ -import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"\u865A\u62DF\u89C6\u56FE / virtualView","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6307\u5B9A\u67E5\u8BE2\u6E90","slug":"\u6307\u5B9A\u67E5\u8BE2\u6E90"},{"level":2,"title":"\u7279\u70B9","slug":"\u7279\u70B9"},{"level":3,"title":"\u4E0D\u53EF\u5199","slug":"\u4E0D\u53EF\u5199"},{"level":3,"title":"\u4F9D\u7136\u652F\u6301 ChainFind","slug":"\u4F9D\u7136\u652F\u6301-chainfind"},{"level":2,"title":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5","slug":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49-virutalview-\u8BED\u53E5"},{"level":3,"title":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B"},{"level":3,"title":"\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02","slug":"\u4F7F\u7528-knex-\u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02"},{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879"}],"relativePath":"orm/virtual-view.md","lastUpdated":1715603494724}',p={},o=t("",37),e=[o];function c(l,u,r,i,k,d){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{_ as __pageData,y as default}; +import{_ as n,z as s,D as a,X as t}from"./plugin-vue_export-helper.1f71b9e3.js";const _='{"title":"\u865A\u62DF\u89C6\u56FE / virtualView","description":"","frontmatter":{},"headers":[{"level":2,"title":"\u6307\u5B9A\u67E5\u8BE2\u6E90","slug":"\u6307\u5B9A\u67E5\u8BE2\u6E90"},{"level":2,"title":"\u7279\u70B9","slug":"\u7279\u70B9"},{"level":3,"title":"\u4E0D\u53EF\u5199","slug":"\u4E0D\u53EF\u5199"},{"level":3,"title":"\u4F9D\u7136\u652F\u6301 ChainFind","slug":"\u4F9D\u7136\u652F\u6301-chainfind"},{"level":2,"title":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49 virutalView \u8BED\u53E5","slug":"\u8DE8\u6570\u636E\u5E93\u5B9A\u4E49-virutalview-\u8BED\u53E5"},{"level":3,"title":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B","slug":"\u624B\u52A8\u533A\u5206\u6570\u636E\u5E93\u7C7B\u578B"},{"level":3,"title":"\u4F7F\u7528 knex \u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02","slug":"\u4F7F\u7528-knex-\u62B9\u5E73\u6570\u636E\u5E93\u5DEE\u5F02"},{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879"}],"relativePath":"orm/virtual-view.md","lastUpdated":1715847568877}',p={},o=t("",37),e=[o];function c(l,u,r,i,k,d){return a(),s("div",null,e)}var y=n(p,[["render",c]]);export{_ as __pageData,y as default}; diff --git a/assets/rfcs_0000-style.md.7e2beb45.js b/assets/rfcs_0000-style.md.cd2c7f7a.js similarity index 88% rename from assets/rfcs_0000-style.md.7e2beb45.js rename to assets/rfcs_0000-style.md.cd2c7f7a.js index 9f368e47..9989be64 100644 --- a/assets/rfcs_0000-style.md.7e2beb45.js +++ b/assets/rfcs_0000-style.md.cd2c7f7a.js @@ -1 +1 @@ -import{_ as t,z as a,D as s,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"RFC: 0000-style","description":"","frontmatter":{},"headers":[],"relativePath":"rfcs/0000-style.md","lastUpdated":1715603494724}',o={},c=e("h1",{id:"rfc-0000-style",tabindex:"-1"},[r("RFC: 0000-style "),e("a",{class:"header-anchor",href:"#rfc-0000-style","aria-hidden":"true"},"#")],-1),n=e("p",null,"WIP",-1),d=[c,n];function l(_,i,p,f,h,u){return s(),a("div",null,d)}var x=t(o,[["render",l]]);export{y as __pageData,x as default}; +import{_ as t,z as a,D as s,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"RFC: 0000-style","description":"","frontmatter":{},"headers":[],"relativePath":"rfcs/0000-style.md","lastUpdated":1715847568877}',o={},c=e("h1",{id:"rfc-0000-style",tabindex:"-1"},[r("RFC: 0000-style "),e("a",{class:"header-anchor",href:"#rfc-0000-style","aria-hidden":"true"},"#")],-1),n=e("p",null,"WIP",-1),d=[c,n];function l(_,i,p,f,h,u){return s(),a("div",null,d)}var x=t(o,[["render",l]]);export{y as __pageData,x as default}; diff --git a/assets/rfcs_0000-style.md.7e2beb45.lean.js b/assets/rfcs_0000-style.md.cd2c7f7a.lean.js similarity index 88% rename from assets/rfcs_0000-style.md.7e2beb45.lean.js rename to assets/rfcs_0000-style.md.cd2c7f7a.lean.js index 9f368e47..9989be64 100644 --- a/assets/rfcs_0000-style.md.7e2beb45.lean.js +++ b/assets/rfcs_0000-style.md.cd2c7f7a.lean.js @@ -1 +1 @@ -import{_ as t,z as a,D as s,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"RFC: 0000-style","description":"","frontmatter":{},"headers":[],"relativePath":"rfcs/0000-style.md","lastUpdated":1715603494724}',o={},c=e("h1",{id:"rfc-0000-style",tabindex:"-1"},[r("RFC: 0000-style "),e("a",{class:"header-anchor",href:"#rfc-0000-style","aria-hidden":"true"},"#")],-1),n=e("p",null,"WIP",-1),d=[c,n];function l(_,i,p,f,h,u){return s(),a("div",null,d)}var x=t(o,[["render",l]]);export{y as __pageData,x as default}; +import{_ as t,z as a,D as s,A as e,I as r}from"./plugin-vue_export-helper.1f71b9e3.js";const y='{"title":"RFC: 0000-style","description":"","frontmatter":{},"headers":[],"relativePath":"rfcs/0000-style.md","lastUpdated":1715847568877}',o={},c=e("h1",{id:"rfc-0000-style",tabindex:"-1"},[r("RFC: 0000-style "),e("a",{class:"header-anchor",href:"#rfc-0000-style","aria-hidden":"true"},"#")],-1),n=e("p",null,"WIP",-1),d=[c,n];function l(_,i,p,f,h,u){return s(),a("div",null,d)}var x=t(o,[["render",l]]);export{y as __pageData,x as default}; diff --git a/clis/orm.html b/clis/orm.html index 6c3f0beb..fe7c1be3 100644 --- a/clis/orm.html +++ b/clis/orm.html @@ -8,7 +8,7 @@ - + @@ -47,7 +47,7 @@ }; };

假设该文件路径为 /path_to/model-define.js, 则 dumpModel 会完成如下工作:

  • 从数据库中读取信息, 包括表结构, 字段类型, 字段名称等等, 生成 /path_to/model-define-dump.json 文件, 包含表结构信息.
  • 生成一个 /path_to/properties-for-t-[user].patch 文件, 表示 dataStorePropertiesuserDefinedProperties 的差异

在执行完 dumpModel 后 这些信息会被保存到 <modelDefine>.js 同目录下的 <modelDefine>-dump.json 文件中.

选项

  • --sync: 是否将用户定义的 model 同步到数据库表结构中.
  • --no-alphabet: 禁用在 patch 时将每个 property 定义按字母顺序排序.
- + diff --git a/index.html b/index.html index e1ca3837..25c57e1b 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ - + @@ -55,7 +55,7 @@ people[0].age = 16; people[0].saveSync();

完整文档, 请参考 FxJS ORM

ISC Licensed | Copyright © 2018-present FxJS

- + diff --git a/orm-packages/db-driver.html b/orm-packages/db-driver.html index 0c8dca62..dcddb2f1 100644 --- a/orm-packages/db-driver.html +++ b/orm-packages/db-driver.html @@ -8,7 +8,7 @@ - + @@ -92,7 +92,7 @@ [cmd: string]: /* arg */any }
- + diff --git a/orm-packages/index.html b/orm-packages/index.html index e7b17d48..9f4b7db6 100644 --- a/orm-packages/index.html +++ b/orm-packages/index.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@

Packages

@fxjs/orm 的仓库基于 mono repo 的风格管理, 所有的包可以在 https://github.com/fxjs-modules/orm/tree/master/packages 中查看到. 本文简单介绍介绍其中作为 orm 基石的比较重要的包:

- + diff --git a/orm-packages/knex.html b/orm-packages/knex.html index 269b0c24..a41864b8 100644 --- a/orm-packages/knex.html +++ b/orm-packages/knex.html @@ -8,7 +8,7 @@ - + @@ -43,7 +43,7 @@ }).toString() // => CREATE TABLE `users` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` VARCHAR(255), `created_at` DATETIME, `updated_at` DATETIME)

更多 knex 的使用可参考测试用例

- + diff --git a/orm-packages/orm-core.html b/orm-packages/orm-core.html index 1c72b3a2..fd983278 100644 --- a/orm-packages/orm-core.html +++ b/orm-packages/orm-core.html @@ -8,7 +8,7 @@ - + @@ -41,7 +41,7 @@ use_tick?: boolean; }): void;

该方法常常用于帮助实现本质上包含异步操作, 且在同时具有 blocking / non-blocking 风格的函数. 在函数内部, 若 input.error 不为空, takeAwayResult 会根据 callback 是否为方法做出不同的处理:

  1. 如果 callback 是一个方法, 则 throw input.error, 而是交由 callback 回调
  2. 否则, 则直接 throw input.error

开发者也可以通过手动指定 no_throw 的值, 来强制是否 throw input.error.

- + diff --git a/orm-packages/orm-property.html b/orm-packages/orm-property.html index a3781d8d..ddfa05d1 100644 --- a/orm-packages/orm-property.html +++ b/orm-packages/orm-property.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@

@fxjs/orm-property

orm-property 提供了对数据库表中的的建模手段. 通过Property meta, 可以定义一个 Property, 在配置对象中, 最重要的是 type 字段. property 的 type 字段决定其基本类型, 其它字段则用于补充说明这个 property 的更多特性和行为.

Property meta

Property meta 是指明建模含义, 模型特性和行为的配置对象, 一个的 Property meta 定义可以包含以下字段:

字段名类型必需意义
typestringrequiredproperty 的基本类型
keybooleanoptional是否是关键 Property, 比如主键, 或是关联关系中的关联键.
primarybooleanoptional是否为 primary key.
requiredbooleanoptional是否是必需的.
mapsTostringoptional映射到实际数据库表中的字段名
uniquebooleanoptional是否为 unique key.
indexstringoptional是否需要索引.
serialbooleanoptional是否为自增整数. 该属性的值可能影响 type 的最终值
defaultValueValue | () => Valueoptional默认值, 或者返回默认值的函数
............

除此以外, 根据 type 的不同, 还可能有其它的补充字段来表示 property 的更多特性和行为. 具体可参考下文中每个 type 的说明章节.

type

ORM 目前支持内置的 property 类型有:

类型意义简写MySQLSQLitePostgreSQL
text文本StringVARCHARTEXTVARCHAR
integer整数-INTEGERINTEGERINTEGER
number数值类型NumberINTEGER
DOUBLE
INTEGER
DOUBLE
INTEGER
DOUBLE
serial自增整数-INTEGER
SERIAL
INTEGER
SERIAL
INTEGER
SERIAL
boolean布尔值BooleanBOOLEANBOOLEANBOOLEAN
date日期DateDATEDATEDATE
binary二进制BufferBLOBBLOBBLOB
object对象ObjectJSONJSONJSON
enum枚举Array<any>ENUMENUMENUM

注意 同样的 type, 在不同的 database backend 中, 可能对应了不同的实际数据库定义, 如, 同样是 { type: 'text', size: 255 }, 在 MySQL 中的定义是 VARCHAR(255), 在 SQLite 和 PostgreSQL 中的定义则是 TEXT.

Property 类型

文本 text

补充字段类型

字段名类型意义
sizenumber若映射的字段具有可变长度(如 mysql 中的 varchar), size 表示希望其拥有的长度
bigboolean若数据库支持, 则 big: true 使用具有较大长度的字段类型, 如 mysql 中的 LONGTEXT

整数 integer

补充字段类型

字段名类型意义
sizeenum: 2, 4, 82: short/smallint; 4: integer; 8: long/bigint. 若传入了其它值, 则修改为 4.
unsignedboolean是否为无符号整数. 该选项仅对 mysql 有意义.
serialboolean是否为自增整数, 若为 truthy, type 会被转化为 serial

浮点数 number

补充字段类型

字段名类型意义
unsignedboolean是否为无符号浮点数. 该选项仅对 mysql < 8.0 有意义.
rationalboolean是否为浮点数, 默认为 truthy, 若指定为 false, type 会被转化为 integer

自增整数 serial

表示自增整数.

注意

  • 指定字段 { "type": "serial" }{ serial: true } 是等价的, 会隐式地启用 { "primary": "true" }.
  • 对于 mysql 而言, 会隐式地启用 { "primary": "true", key: "true" }

布尔值 boolean

表示布尔类型

日期 date

表示日期类型(具体到日)

字段名类型意义
timeboolean是否包含当具体到微秒的时间信息

二进制 binary / object

表示二进制对象

字段名类型意义
bigboolean若数据库支持, 则 big: true 使用具有较大长度的二进制数据, 如 mysql 中的 LONGBLOB

枚举 enum

表示枚举值类型

简写

简写等价配置
String{ type: 'text' }
Number{ type: 'number' }
Boolean{ type: 'boolean' }
Date{ type: 'date' }
Object{ type: 'object' }
Buffer{ type: 'binary' }
- + diff --git a/orm-packages/sql-ddl-sync.html b/orm-packages/sql-ddl-sync.html index f61ffa29..07b12676 100644 --- a/orm-packages/sql-ddl-sync.html +++ b/orm-packages/sql-ddl-sync.html @@ -8,7 +8,7 @@ - + @@ -59,7 +59,7 @@ strategy: 'soft', // 'soft' | 'hard' | 'mixed' });

该参数指定, 当对一个已经存在的表进行 sync.sync() 时, 应该采取何种策略:

注意 在实际业务中, 修改数据库结构是一件很严肃的事情, 必须严格遵照数据库的结构规范, 并且由专业的工程师来执行. 因此,, 我们不建议使用 hard 策略, 它很可能会导致数据库的数据丢失. 更推荐的做法是, 永远使用 soft 策略, 如果模型不符合实际的数据库表, 应根据业务变更, 修改数据库表结构或修改建模的定义, 以使得 sync 符合实际的需求.

- + diff --git a/orm-packages/sql-query.html b/orm-packages/sql-query.html index 23be74a2..a33cef88 100644 --- a/orm-packages/sql-query.html +++ b/orm-packages/sql-query.html @@ -8,7 +8,7 @@ - + @@ -80,7 +80,7 @@ const query = new Query({ dialect: 'mysql' }); const chainBuilder = query.remove();

signature Query::remove()

参考测试用例

comparators

comparators 是在 query 中生成特定比较对象的 utils, 它包含以下比较操作:

(To be continued)

- + diff --git a/orm/Adapters.html b/orm/Adapters.html index f9acca4c..5c75c326 100644 --- a/orm/Adapters.html +++ b/orm/Adapters.html @@ -8,7 +8,7 @@ - + @@ -25,7 +25,7 @@ protocol: string; } - + diff --git a/orm/connect-db.html b/orm/connect-db.html index a3865f57..7f04c75a 100644 --- a/orm/connect-db.html +++ b/orm/connect-db.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@
- + diff --git a/orm/getting-started.html b/orm/getting-started.html index 0befe63c..ce1c7999 100644 --- a/orm/getting-started.html +++ b/orm/getting-started.html @@ -8,7 +8,7 @@ - + @@ -49,7 +49,7 @@ }) })

TypeScript

TypeScript 已经成为 JavaScript 生态中的一个重要的支撑, 它的类型系统是非常强大的.

orm 基于 fib-typify 开发, 核心源代码均由 typescript 编写, 包括 orm 所有的关键包均提供了类型支持, 以帮助开发者在支持 TypeScript LSP 的 IDE (比如 Visual Studio Code, WebStorm) 中获得友好的类型提示.

- + diff --git a/orm/index.html b/orm/index.html index a779bcb6..2dcb8b5e 100644 --- a/orm/index.html +++ b/orm/index.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@
- + diff --git a/orm/plugins.html b/orm/plugins.html index ee1b07c4..1f696e95 100644 --- a/orm/plugins.html +++ b/orm/plugins.html @@ -8,7 +8,7 @@ - + @@ -28,7 +28,7 @@ } }); - + diff --git a/orm/property.html b/orm/property.html index 5a187f99..2db9e2b4 100644 --- a/orm/property.html +++ b/orm/property.html @@ -8,7 +8,7 @@ - + @@ -24,7 +24,7 @@ } });

这两种声明完全等价, 第一种风格是基于 Function 的简写(参考简写); 但第二种风格是完整声明, 允许我们为 name 这个 Property 指定更多的特性和行为.

orm 的 Property 能力由 @fxjs/orm-property 支持.

- + diff --git a/orm/virtual-view.html b/orm/virtual-view.html index 9fd3ac0c..3bb5b2ae 100644 --- a/orm/virtual-view.html +++ b/orm/virtual-view.html @@ -8,7 +8,7 @@ - + @@ -87,7 +87,7 @@ virtualView: "select * from `students_info` where `class_no` = '1'" } - + diff --git a/rfcs/0000-style.html b/rfcs/0000-style.html index 7e762582..05a2b2a7 100644 --- a/rfcs/0000-style.html +++ b/rfcs/0000-style.html @@ -8,7 +8,7 @@ - + @@ -16,7 +16,7 @@
- +