日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
RDB.js:適用于Node.js和Typescript的終極對象關(guān)系映射器

RDB.js 是適用于 Node.js 和 Typescript 的終極對象關(guān)系映射器,可與 Postgres、MS SQL、MySQL、Sybase SAP 和 SQLite 等流行數(shù)據(jù)庫無縫集成。無論您是使用 TypeScript 還是 JavaScript(包括 CommonJS 和 ECMAScript)構(gòu)建應(yīng)用程序,RDB 都能滿足您的需求。

成都創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋成都除甲醛等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。

RDB.js:https://rdbjs.org/

關(guān)鍵特性

  • 豐富的查詢模式:RDB 提供了強大而直觀的查詢模型,可輕松檢索、過濾和操作數(shù)據(jù)庫中的數(shù)據(jù)。
  • 簡明 API:RDB 擁有簡明且便于開發(fā)人員使用的 API,可讓您使用簡單而富有表現(xiàn)力的語法與數(shù)據(jù)庫進行交互。
  • 無需代碼生成:享受完整的智能感知,即使在表映射中,也不需要繁瑣的代碼生成。
  • 支持 TypeScript 和 JavaScript:RDB 完全支持 TypeScript 和 JavaScript,讓您可以充分利用靜態(tài)類型和現(xiàn)代 ECMAScript 功能的優(yōu)勢。
  • 可在瀏覽器中使用:通過使用 Express.js 插件,您可以在瀏覽器中安全地使用 RDB,該插件用于保護敏感的數(shù)據(jù)庫憑據(jù),避免在客戶端級別暴露。這個方法反映了傳統(tǒng)的 REST API,并使用了高級 TypeScript 工具來增強功能。

安裝與使用

$ npm install rdb

示例

這里我們選擇 SQLite。

npm install sqlite3

map.js 地圖.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 更新.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 過濾器.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 });
}

本文名稱:RDB.js:適用于Node.js和Typescript的終極對象關(guān)系映射器
本文鏈接:http://m.5511xx.com/article/dpegshh.html