在 Nest.js 中使用 MongoDB 与 TypeORM
在 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的更多相关文章
- 在egg.js中使用mongodb
1.egg.js官网只推荐了mysqle,要用mongodb得另找资料.通过查找,大家都在用Mongoose连接,于是乎学习. 网站链接:https://www.npmjs.com/package/e ...
- [Nest] 01.初见nest.js
github nest 介绍 Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架.它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人 ...
- js中闭包和对象相关知识点
学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScrip ...
- Node.js 中MongoDB的基本接口操作
Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...
- 初识nest.js
nest的核心概念: Nest的核心概念是提供一种体系结构,它帮助开发人员实现层的最大分离,并在应用程序中增加抽象. 架构预览: 主要有三个核心概念:模块Module, 控制器Controller, ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 1.从Node.js链接到MongoDB
MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...
- Node.js中的Session,不要觉得简单哦。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...
- React+Node.js+Express+mongoskin+MongoDB
首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...
随机推荐
- 《Kubernetes权威指南》01_Kubernetes入门——Kubernetes 是什么
01_Kubernetes入门 li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list-style ...
- Dubbo(二):深入理解Dubbo的服务发现SPI机制
一.前言 用到微服务就不得不来谈谈服务发现的话题.通俗的来说,就是在提供服务方把服务注册到注册中心,并且告诉服务消费方现在已经存在了这个服务.那么里面的细节到底是怎么通过代码实现的呢,现在我们来看看D ...
- Java学习笔记----打印基本数据类型范围
/** * Created by N3verL4nd on 2016/11/10. */ public class HelloWorld { public static void main(Strin ...
- FFMPEG学习----使用SDL播放PCM数据
参考雷神的代码: /** * 最简单的SDL2播放音频的例子(SDL2播放PCM) * Simplest Audio Play SDL2 (SDL2 play PCM) * * 本程序使用SDL2播放 ...
- 三、 TCP(传输控制协议)
它建立在网际层协议(IP)提供的数据包传输技术之上,.TCP使应用程序可使用连续的数据进行通信.除非由于网络故障导致连接中断或冻结,TCP都能保证数据流完好地传输.而不会发生丢包 ,重包或是乱序的问题 ...
- 90万条数据玩转RFM用户分析模型
RFM,是一种经典的用户分类.价值分析模型: R,Rencency,即每个客户有多少天没回购了,可以理解为最近一次购买到现在隔了多少天. F,Frequency,是每个客户购买了多少次. M,Mone ...
- Codeforces Round #600 (Div. 2) E. Antenna Coverage
Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...
- Codeforces 1092 D2 Great Vova Wall (Version 2) (栈)
题意: 给一排砖,每列的高度$a_i$,问是否可以放1*2的砖,使得n列高度一样,砖只能横着放 思路: 每两个相邻的高度相同的砖可以变成大于等于它的高度的任意高度 所以像这样的 123321 是不满足 ...
- SpringBoot、Spring MVC报错:Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
出现问题的原因: jdbc配置不正确 解决方案: 1.检查是否已添加数据库驱动jar包 2.检查数据库服务是否启动 3.检查数据库配置文件 主要为:dialect,driver_class,url,u ...
- OSPFv3与OSPFv2协议的比较
From: http://blog.sina.com.cn/s/blog_61bd83dc0100la2u.html OSPFv3与OSPFv2协议的比较 OSPF是一种链路状态路由协议.它具有标 ...