小编And*_*ipe的帖子

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万
查看次数

Spring Batch 自定义 ItemReader 无法打开

我有一个 Spring Batch 项目,其中有一个从 Web 服务异步检索数据的JsonResouurceAsyncPagingItemReader自定义项目。ItemReader

此自定义ItemReader使用 aExecutorService来提交对 Web 服务的调用。但是我在初始化它时遇到了麻烦。

我尝试通过doOpen提供的方法初始化它AbstractItemCountingItemStreamItemReader,但似乎doOpen没有被调用。

ItemReaderSpring 通过以下方式注入:

@Bean
@JobScope
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun,
        @Value("#{jobParameters['codInt']}") Long codInt) {

    Map<String, Object> parameterValues = new HashMap<String, Object>();
    if (lastRun != null) {
        parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat));
    }
    if (codInt != null) {
        parameterValues.put("codInt", codInt);
    }

    JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>();
    reader.setHttpUrl(server + pathTemplate);
    reader.setRestTemplate(restTemplate);
    reader.setParameterValues(parameterValues);
    reader.setPageSize(pageSize);

    return reader;
}
Run Code Online (Sandbox Code Playgroud)

并进一步用于Step …

java spring spring-batch

0
推荐指数
1
解决办法
1277
查看次数