顺义企业建站费用,百度推广排名代发,广告的六种广告形式,在自己的电脑做网站空间RDB.js 是适用于 Node.js 和 Typescript 的终极对象关系映射器#xff0c;可与 Postgres、MS SQL、MySQL、Sybase SAP 和 SQLite 等流行数据库无缝集成。无论您是使用 TypeScript 还是 JavaScript#xff08;包括 CommonJS 和 ECMAScript#xff09;构建应用程序#xff0c…
RDB.js 是适用于 Node.js 和 Typescript 的终极对象关系映射器可与 Postgres、MS SQL、MySQL、Sybase SAP 和 SQLite 等流行数据库无缝集成。无论您是使用 TypeScript 还是 JavaScript包括 CommonJS 和 ECMAScript构建应用程序RDB 都能满足您的需求。 RDB.jshttps://rdbjs.org/ 关键特性
丰富的查询模式RDB 提供了强大而直观的查询模型可轻松检索、过滤和操作数据库中的数据。简明 APIRDB 拥有简明且便于开发人员使用的 API可让您使用简单而富有表现力的语法与数据库进行交互。无需代码生成享受完整的智能感知即使在表映射中也不需要繁琐的代码生成。支持 TypeScript 和 JavaScriptRDB 完全支持 TypeScript 和 JavaScript让您可以充分利用静态类型和现代 ECMAScript 功能的优势。可在浏览器中使用通过使用 Express.js 插件您可以在浏览器中安全地使用 RDB该插件用于保护敏感的数据库凭据避免在客户端级别暴露。这个方法反映了传统的 REST API并使用了高级 TypeScript 工具来增强功能。
安装与使用
$ npm install rdb示例 这里我们选择 SQLite。
npm install sqlite3map.js
import rdb from rdb;const map rdb.map((x) ({customer: x.table(customer).map(({ column }) ({id: column(id).numeric().primary().notNullExceptInsert(),name: column(name).string(),balance: column(balance).numeric(),isActive: column(isActive).boolean(),})),order: x.table(_order).map(({ column }) ({id: column(id).numeric().primary().notNullExceptInsert(),orderDate: column(orderDate).date().notNull(),customerId: column(customerId).numeric().notNullExceptInsert(),})),orderLine: x.table(orderLine).map(({ column }) ({id: column(id).numeric().primary(),orderId: column(orderId).numeric(),product: column(product).string(),})),deliveryAddress: x.table(deliveryAddress).map(({ column }) ({id: column(id).numeric().primary(),orderId: column(orderId).numeric(),name: column(name).string(),street: column(street).string(),postalCode: column(postalCode).string(),postalPlace: column(postalPlace).string(),countryCode: column(countryCode).string(),})),})).map((x) ({order: x.order.map((v) ({customer: v.references(x.customer).by(customerId),lines: v.hasMany(x.orderLine).by(orderId),deliveryAddress: hasOne(x.deliveryAddress).by(orderId),})),}));export default map;update.js
import map from ./map;
const db map.sqlite(demo.db);updateRow();async function updateRow() {const order await db.order.getById(2, {lines: true,});order.lines.push({product: broomstick,});await order.saveChanges();
}filter.js
import map from ./map;
const db map.sqlite(demo.db);getRows();async function getRows() {const filter db.order.lines.any((line) line.product.contains(broomstick)).and(db.order.customer.name.startsWith(Harry));const orders await db.order.getMany(filter, {lines: true,deliveryAddress: true,customer: true,});console.dir(orders, { depth: Infinity });
}