在 Nest.js 中使用 MongoDB 与 TypeORM

首先要在 database 文件夹里建立DatabaseModule模块文件,

// database/database.module.ts
import { Module } from '@nestjs/common';
import { databaseProviders } from './database.providers'; @Module({
providers: [...databaseProviders],
exports: [...databaseProviders],
})
export class DatabaseModule {}

还有databaseProviders,要注意根据情况配置好端口、数据库名等等信息,

// database/database.providers.ts
import { createConnection } from 'typeorm'; export const databaseProviders = [
{
// Token可以自己设定
provide: 'DbConnectionToken',
useFactory: async () =>
await createConnection({
type: 'mongodb',
host: 'localhost',
port: 27017,
database: 'test',
entities: [__dirname + '/../**/*.entity{.ts,.js}'],
}),
},
];

然后在一个需要用到 MongoDB 的模块里导入DatabaseModule,我这里用的是LoginModule,

// login/login.module.ts
import { Module } from '@nestjs/common';
import { DatabaseModule } from '../database/database.module';
import { loginProviders } from './login.providers';
import { LoginService } from './login.service';
import { LoginController } from './login.controller'; @Module({
imports: [DatabaseModule], // 这里导入进来
controllers: [LoginController],
providers: [...loginProviders, LoginService],
})
export class LoginModule {}

定义好你的数据实体,

// login/login.entity.ts
import { Entity, Column, ObjectID, ObjectIdColumn } from 'typeorm'; @Entity()
export class User {
@ObjectIdColumn() id: ObjectID;
@Column() username: string;
@Column() password: string;
}

在loginProviders里注入,

// login/login.providers.ts
import { Connection, getMongoRepository } from 'typeorm';
import { User } from './login.entity'; export const loginProviders = [
{
// Token可以自己设定
provide: 'LoginRepositoryToken',
// User是entity定义的数据实体
useFactory: (connection: Connection) => connection.getMongoRepository(User),
inject: ['DbConnectionToken'],
},
];

在LoginService里面引入,

import { Injectable, Inject } from '@nestjs/common';
import { MongoRepository } from 'typeorm';
import { User } from './login.entity'; @Injectable()
export class LoginService {
constructor(
// Token要对应
@Inject('LoginRepositoryToken')
private readonly loginRepository: MongoRepository<User>,
) {}
// 数据库的操作交给service来提供
async findAll(): Promise<User[]> {
return await this.loginRepository.find();
}
}

最后就可以在LoginController里面使用了!

在 Nest.js 中使用 MongoDB 与 TypeORM的更多相关文章

  1. 在egg.js中使用mongodb

    1.egg.js官网只推荐了mysqle,要用mongodb得另找资料.通过查找,大家都在用Mongoose连接,于是乎学习. 网站链接:https://www.npmjs.com/package/e ...

  2. [Nest] 01.初见nest.js

    github nest 介绍 Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架.它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人 ...

  3. js中闭包和对象相关知识点

    学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScrip ...

  4. Node.js 中MongoDB的基本接口操作

    Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...

  5. 初识nest.js

    nest的核心概念: Nest的核心概念是提供一种体系结构,它帮助开发人员实现层的最大分离,并在应用程序中增加抽象. 架构预览: 主要有三个核心概念:模块Module,  控制器Controller, ...

  6. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  7. 1.从Node.js链接到MongoDB

    MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...

  8. Node.js中的Session,不要觉得简单哦。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...

  9. React+Node.js+Express+mongoskin+MongoDB

    首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...

随机推荐

  1. DRF框架之Serializer序列化器的序列化操作

    在DRF框架中,有两种序列化器,一种是Serializer,另一种是ModelSerializer. 今天,我们就先来学习一下Serializer序列化器. 使用Serializer序列化器的开发步骤 ...

  2. 模块化系列教程 | 阿里JarsLink1.0模块化场景实战Demo

    场景实战Demo使用指引 Quickstart 快速开始 Demo说明 模块说明 使用说明 情景一环境部署 工作原理 情景二环境部署 工作原理 场景实战Demo使用指引 个人之前学习过程中对JarsL ...

  3. 分享数百个 HT 工业互联网 2D 3D 可视化应用案例之 2019 篇

    继<分享数百个 HT 工业互联网 2D 3D 可视化应用案例>2018 篇,图扑软件定义 2018 为国内工业互联网可视化的元年后,2019 年里我们与各行业客户进行了更深度合作,拓展了H ...

  4. 在Mysql中,事务是如何实现的呢?

    hello大家好,我是一个爱看底层的小码,对于每一个学习mysql数据库的同学来说,事务都是一个绕不开的话题,简单的说来事务是指访问并可能更新数据库中各项数据项的一个程序执行单元.事务的四个特征无非就 ...

  5. 聊聊“装箱”在CLR内部的实现

    原文连接:https://mattwarren.org/2017/08/02/A-look-at-the-internals-of-boxing-in-the-CLR/ 作者 Matt Warren. ...

  6. 通过欧拉计划学Rust编程(第54题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...

  7. shell命令之一天一见

    一.在统计行数时常要用的到命令包括 w.c.l, 在这里做个简单的介绍. 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也 ...

  8. Python:自动化上传OSS

    简介 最近在学习Python,为之庞大的第三方库感到震撼.今天分享一个Python 自动化脚本,功能是将H5静态资源上传到OSS,以方便实现CDN加速,我将其放在Jenkins自动发布中使用.该脚本不 ...

  9. Spark中的RDD和DataFrame

    什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在 ...

  10. 卫星轨道相关笔记SGP4

    由卫星历书确定卫星轨道状态向量 卫星历书的表示方法有2种: TLE(Two Line Element),和轨道根数表示方法 由卫星历书计算出卫星轨道状态向量的方法有2种: SGP方法,NORAD的方法 ...