在 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. openstack 架构

    openstack 概念架构: openstack逻辑架构 常见的架构:

  2. nginx配置文件的通用语法介绍

    nginx的配置文件是ascii文本文件. 比如http{  }这种的是指令块,include  mime.types: 这种是指令,include是指令,mime.types指令的参数,指令和参数之 ...

  3. what is muxing and demuxing

    They're short for multiplexing and demultiplexing. Multiplexing means combining different types of d ...

  4. C++输出中文字符

    注:本文转载自互联网,感谢作者整理!   1. cout 场景1: 在源文件中定义 const char* str = "中文" 在 VC++ 编译器上,由于Windows环境用 ...

  5. Exchange邮件服务器安全

    Exchange是由微软推出的用于企业环境中部署的邮件服务器.Exchange在逻辑上分为三个层次:网络层(network layer).目录层(directory layer).消息层(messag ...

  6. https搭建(自签名证书)

    博客搬家: https搭建(自签名证书) 上一篇博客探究了https(ssl)的原理,为了贯彻理论落实于实践的宗旨,本文将记录我搭建https的实操流程,使用Apache2+ubuntu+openss ...

  7. java一些技术

    怎么样得到编译.java文件得到.class文件 两个用于反编译的工具Luyten和java decompiler 直接将jar包或则.class字节码文件拖到里面即可得到反汇编得到对应的java文件 ...

  8. 7天用Go动手写/从零实现分布式缓存GeeCache

    1 谈谈分布式缓存 第一次请求时将一些耗时操作的结果暂存,以后遇到相同的请求,直接返回暂存的数据.我想这是大部分童鞋对于缓存的理解.在计算机系统中,缓存无处不在,比如我们访问一个网页,网页和引用的 J ...

  9. 08-JavaScript基础

    今日知识 1. JavaScript基础 2. 案例 3.总结 JavaScript介绍: * 概念:一门客户端脚本语言 * 运行在客户端浏览器中的,每一个浏览器都有JavaScript的解析引擎 * ...

  10. MSSqlServer访问远程数据库

    --第一部分(要点)--永久访问方式(需对访问远程数据库进行经常性操作)时设置链接数据库Exec sp_addlinkedserver 'MyLinkServer','','SQLOLEDB','远程 ...