node.js - Ravendb Nodejs,在 map 索引中使用Enums

标签 node.js indexing nestjs ravendb

我在nestjs中使用ravendb

我在库项目(核心库)中有一个枚举:

export enum GroupType {
    Agent = "agent",
    System = "system"
}

我在索引逻辑中导入并使用该枚举(raven 项目)

import { Models } from '@ply/core';
        
export class Agents_All extends AbstractJavaScriptMultiMapIndexCreationTask<AgentResult> {
        this.map<IUser>(User, user => {
            if(user.groupType === Models.Enums.GroupType.Agent){

第一季度: 如何在 map 索引中使用枚举或常量,是否应该将它们导出到 Ravendb 作为附加源?像函数一样导出枚举?

下面是 Ravendb 端生成的映射索引: enter image description here 第二季度: 为什么Ravendb要在枚举之前添加项目的枚举名称作为命名空间

Models.Enums.GroupType.Agent 转换为 core_1.Models.Enums.GroupType.Agent

最佳答案

我们实现了此功能,为了使用此类枚举,您应该通过 this.registerEnum(() => RoleString.Admin); 调用来注册它。然后你可以在map/reduce函数中使用这样的枚举,并将其替换为正确的枚举值。

enum RoleNumber {
    Admin,
    User
}


class User {
    id: string;
    name: string;
    roleString: RoleString;
    roleNumber: RoleNumber;
}

class UsersByStringRole extends AbstractJavaScriptIndexCreationTask<User, Pick<User, "name" | "roleString">> {

    constructor() {
        super();

        this.registerEnum(() => (RoleString.Admin));

        this.map(User, u => {
            if (u.roleString === RoleString.Admin) {
                return ({
                    name: u.name,
                    roleString: u.roleString
                });
            }
            return null;
        });
    }
}

class UsersByNumberRole extends AbstractJavaScriptIndexCreationTask<User, Pick<User, "name" | "roleNumber">> {

    constructor() {
        super();

        this.registerEnum(() => RoleNumber.Admin);

        this.map(User, u => {
            if (u.roleNumber === RoleNumber.Admin) {
                return ({
                    name: u.name,
                    roleNumber: u.roleNumber
                });
            }
            return null;
        });
    }
}

关于node.js - Ravendb Nodejs,在 map 索引中使用Enums,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74344061/

相关文章:

node.js - Q.all 在 forEach 之前运行

node.js - 使用多个字段表达 app.get

node.js - 未捕获( promise )TypeError : dispatch is not a function useContext/useReducer

c - C 中数组索引的正确类型是什么?

javascript - Nestjs中的多注入(inject)

node.js - 如何修复目录导入 '@angular-devkit\build-angular\src\dev-server' 不支持在将 Angular 更新到版本 13 后解析 ES 模块

C: *数组[x]的大小?

python - 如何将索引添加到字典中

mongoose - 无法在 NestJS 应用程序中启动和运行 Mongoose 虚拟

javascript - 将请求的文件从 API 传输到 API : NestJS(HttpService: Axios) to Python(flask)