标签: mongoose-sequence

“只能使用‘esModuleInterop’标志默认导入”是什么意思?

我收到以下错误:

lib/app.ts:1:8 - error TS1259: Module '"mongoose-sequence"' can only be default-imported using the 'esModuleInterop' flag
Run Code Online (Sandbox Code Playgroud)

在以下代码行中:

import _ from 'mongoose-sequence';
Run Code Online (Sandbox Code Playgroud)

现在,我很高兴地承认我遗漏了整个“下划线作为函数名称”的内容,但该错误没有任何意义,因为该esModuleInterop标志true在我的 ts.config 文件中绝对肯定地设置为。

我正在尝试导入:

declare module 'mongoose-sequence' {
  import mongoose = require('mongoose');
  var _: (schema: mongoose.Schema, options?: Object) => void;
  export = _;
Run Code Online (Sandbox Code Playgroud)

来自猫鼬序列绝对类型定义。

我错过了什么?

typescript mongoose-sequence

9
推荐指数
1
解决办法
1万
查看次数

NestJs/Mongoose 中的自动递增序列

我正在将 NodeJs 项目迁移到 NestJs,该项目使用 MongoDB 作为后端数据库,使用 Mongoose 作为 ODM。我使用mongoose-sequence插件来处理自动增量序列,但是我遇到了需要 NestJs 下的库的麻烦。

mongoose-sequence 文档解释了如何使用 CommonJS 语法导入库,如下所示:

const mongoose = require('mongoose')
const AutoIncrementFactory = require('mongoose-sequence');

const connection = await mongoose.createConnection('mongodb://...');

const AutoIncrement = AutoIncrementFactory(connection);
Run Code Online (Sandbox Code Playgroud)

使用 ES6 导入语法,它会是这样的:

import * as mongoose from 'mongoose';
import * as AutoIncrementFactory from 'mongoose-sequence';

const connection = ...;

const AutoIncrement = AutoIncrementFactory(connection);
Run Code Online (Sandbox Code Playgroud)

然而,由于 NestJs 使用依赖注入,访问本机连接并不那么直接。根据使用 Mongoose 集成 MongoDB 的文档,可以使用@InjectConnection()装饰器访问本机 Mongoose Connection 对象,如下所示:

@Injectable()
export class CatsService {
  constructor(@InjectConnection() private connection: Connection) …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js nestjs mongoose-sequence

7
推荐指数
1
解决办法
1万
查看次数