前端教程:使用 Contour-ORM 作为 npm 包

什么是 Contour-ORM?

Contour-ORM 是一个基于 JavaScript 的 ORM(对象关系映射) 库,它可以让开发者简单地与数据库进行交互。它建立在顶级 ORM 库 Sequelize 之上,以提供更加强大且易于使用的界面。

安装 Contour-ORM

使用 npm 安装 Contour-ORM:

--- ------- -----------

连接数据库

首先,我们需要设置一个 sequelize 实例来连接数据库。sequelize 基于 Sequelize 库生成并返回一个实例对象。

----- ---------- - -----------------------
----- --------- - ---------------------

----- -------- - -
  --------- -------------
  --------- -------
  --------- --------------
  ----- ------------
  -------- -------
--

----- --------- - --- ---------------------------- ------------------ ------------------ -
  ----- --------------
  -------- -----------------
---
  
----- --- - --- ------------------------

以上代码演示了如何设置 sequelize,并将其传递给 ContourORM

定义模型

在 ORM 中,模型定义了表的结构。 Contour-ORM 为我们提供了方便的接口,以定义表格。

----- ---- - ------------------ -
  --- -
    ----- -------------------
    ----------- -----
    -------------- -----
  --
  ---------- ----------------------
  --------- ----------------------
  --------- -
    ----- ----------------------
    ------- -----
    ---------- ------
  --
  --------- -
    ----- ----------------------
    ---------- ------
  --
---

从以上代码段,我们可以看出模型定义包含模型名称和模型属性。模型属性描述了表中的每一列或字段。

当定义模型属性时,还可以指定属性类型,属性长度以及是否为主键。在此示例中,我们定义了 User 模型,其中 id 作为主键,在添加用户时自动增加。

请注意,我们可以只显示属性类型而不是 type 属性,并且如果未定义任何其他属性,则默认设置属性名称为字符串类型。

模型之间的关系

在建立关系时, ORM 确定了表之间的关系,并在关联表上更改行。 Contour-ORM 通过在关联的 ORM 模型中添加外键来建立模型之间的关系。

----- ---- - ------------------ -
  --- -
    ----- -------------------
    ----------- -----
    -------------- -----
  --
  ------ -
    ----- ----------------------
    ---------- ------
  --
  -------- -
    ----- ----------------
    ---------- ------
  --
---

-------------------- -
  --- ---------
---

------------------ -
  ----------- ---------
---

以上代码演示了如何创建两个模型之间的一对多关系。在此示例中,我们使用 belongsTohasMany 定义了 UserPost 之间的关系。

  • Post.belongsTo(User, { as: 'Author',}); 表示 Post 模型实例可以属于 User 模型实例,并且在 Post 模型实例表中,将创建一个名为 AuthorId 的列,其值是对应的 User 模型实例的 id

  • User.hasMany(Post, {foreignKey: 'UserId',}); 表示 User 模型实例可以有多个 Post 模型实例,并且在 Post 模型实例表中,将创建一个名为 UserId 的列,其值是对应的 User 模型实例的 id

创建和查询表格

现在我们已经定义了模型和关系,我们可以使用 sequelize.sync() 自动创建表格,并使用 .create() 查询和添加行。

------------------------ -- -
  -------------
    ---------- -------
    --------- ------
    --------- ----------
    --------- --------------
  ------------ -- -
    -------------
      ------ ------ -------
      -------- ----- -- -- ----- -------
      --------- --------
    ---------- -- -
      --------------
        -------- -------
      ------------- -- -
        -------------------
      ---
    ---
  ---
---

在以上代码段中,我们使用 User.create() 创建了一个新用户,并使用 Post.create() 创建了一篇新博客文章。我们可以在 create 的回调函数中找到刚刚创建的行,以供我们添加其他行。在此示例中,我们为新创建的帖子添加了一个 AuthorId 列引用相应的用户 ID。

最后,我们使用 Post.findAll({ include: [User], }) 查询目前所有的博客文章,并使用 User 模型打印出所有帖子混合用户信息的结果。

总结

以上是使用 Contour-ORM 的简单示例。 ORM 可以帮助减少与数据所有相关的混乱代码,使代码更易于理解和测试。 ORM 可以轻松处理关联数据表格之间的关系,而不需要程序员执行手动软件开发。

Contour-ORM 为我们提供了一种更加易于使用的接口,以使用 Sequelize 库 和 Node.js,以允许我们查看数据库中的数千行数据,并以最小的交互效果对其进行操作。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/85583


猜你喜欢

  • npm 包 connect-request-logger-pg 使用教程

    在前端开发中,我们常常需要 log 信息来进行调试和分析。在 Node.js 中,我们通常使用 console.log() 来输出 log 信息。但是,在生产环境下使用 console.log 并不安...

    5 年前
  • npm 包 @visionagency/feathers-plus-graphql 使用教程

    简介 @visionagency/feathers-plus-graphql 是一个基于 Feathers.js 和 graphql-yoga 的 npm 包,用于在前端项目中快速集成 GraphQL...

    5 年前
  • npm 包 @repetere/node-redshift 使用教程

    前言 在前端的开发过程中,我们经常需要读取和写入数据库的数据,而使用 SQL 是非常常见的实现方式。在 node.js 环境下,我们可以使用 node-postgres 等库来连接 PostgreSQ...

    5 年前
  • npm 包 @keleran/orm 使用教程

    什么是 @keleran/orm? @keleran/orm 是一款适用于前端应用的对象关系映射框架。 安装 @keleran/orm --- ------- ------------如何使用 @ke...

    5 年前
  • npm包@feathers-plus/graphql使用教程

    简介 @feathers-plus/graphql是一个基于GraphQL技术的FeathersJS框架的npm包,它可以让开发人员更加便捷地实现GraphQL API的部署和后端接口的编写,非常适合...

    5 年前
  • npm 包 @envage/hapi-pg-rest-api 使用教程

    在 Web 开发中,前端前端工程师不可避免地需要与后端接口进行数据交互。为了方便地开发和管理后端接口,我们通常会使用一个称为“RESTful API”的规范。而在 Node.js 中,我们可以通过 h...

    5 年前
  • NPM 包 code-templates 使用教程

    在前端开发中,我们常常需要使用到重复性高的代码块。为了提高工作效率,我们可以使用 NPM 包 code-templates 来创建自定义代码模板。本文将详细介绍 code-templates 的使用方...

    5 年前
  • npm 包 clay-sequelize 使用教程

    前言 在 Node.js 应用的开发过程中,很多时候需要使用到数据库。使用 Node.js 操作数据库的方式很多,如使用原生的 Node.js 模块来操作数据库、使用 ORM (Object Rela...

    5 年前
  • npm 包 baucis 使用教程

    什么是 baucis Baucis 是一个基于 Express 的自动 RESTful API 生成器,它的作用是帮助开发者自动化地生成处理 RESTful API 的代码和逻辑。

    5 年前
  • npm 包 atomify-cli 使用教程

    前言 Atomify-cli 是一个 Node.js 模块,用于将前端资源文件打包并压缩成一个单独的 JS 文件,以优化前端页面的性能。本文将详细介绍如何使用 atomify-cli,包括安装和使用方...

    5 年前
  • npm 包 metalsmith-better-excerpts 使用教程

    在前端开发中,经常需要用到 markdown 来编写文档、博客等内容。而 metalsmith-better-excerpts 是一个能够为 markdown 文章自动生成摘要的 npm 包,使用起来...

    5 年前
  • npm 包 contentful-metalsmith 使用教程

    介绍 contentful-metalsmith 是一个基于 Metalsmith 构建的 CMS 工具,可以通过连接 Contentful API 来快速构建静态网站。

    5 年前
  • npm 包 metalsmith-filter 使用教程

    Metalsmith 是一个静态网站生成器,它允许开发者使用简单的插件机制自定义网站构建流程。在构建网站时,我们通常需要对源文件进行筛选,例如只选择某些特定类型的文件来进行下一步处理。

    5 年前
  • Npm 包 metalsmith-excerpts 使用教程

    Metalsmith 是一个简单、易用、灵活的静态网站生成器,它使得构建、生成和发布网站变得非常容易。Metalsmith 的灵活性表现在其插件系统上,你可以使用插件来扩展 Metalsmith 的功...

    5 年前
  • npm 包 @harmonyhub/client 使用教程

    前言 @harmonyhub/client 是一个基于 Node.js 和 Typescript 建立的 npm 包。它可以让开发者更容易的与 Harmony Hub 进行交互。

    5 年前
  • npm包@andrewmccall/hubot-hipchat使用教程

    前言 在日常的前端开发中,我们经常会使用到一些现成的npm包来加快开发效率。而在部分公司的工作流程中,会使用到团队内部开发的聊天机器人来帮助处理部分重复性工作和协作沟通。

    5 年前
  • npm 包 node-xmpp-server 使用教程

    前言 在前端开发中,我们常常需要与后端进行实时通信,而 XMPP 是一种用于实时通信的标准协议。在 Node.js 中,我们可以使用 node-xmpp-server 这个 npm 包快速搭建自己的 ...

    5 年前
  • npm 包 gmail-notifier 使用教程

    在开发过程中,你可能需要定期查收邮件,以确保没有重要信息被忽略。在这种情况下,直接登录 Gmail 并频繁检查会很不方便。npm 包 gmail-notifier 可以帮助你避免这个问题,为你提供一个...

    5 年前
  • npm 包 brobbot-xmpp 使用教程

    介绍 Brobbot-xmpp 是一个基于 Node.js 的 XMPP 机器人,它可以连接到一个 XMPP 服务器,通过聊天室或私人会话与用户交互。 安装 安装 brobbot-xmpp 可以使用 ...

    5 年前
  • npm 包 @xmpp/xml 使用教程

    简介 @xmpp/xml 是一个基于 JavaScript 的 XMPP XML 库,用于处理 XMPP 协议中的 XML 数据。它提供了一个简单、轻量级和易于使用的 API,可以帮助你在前端开发中处...

    5 年前

相关推荐

    暂无文章