我在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 端生成的映射索引: 第二季度: 为什么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/