小编mas*_*ion的帖子

nodejs:process.stdout.write 的短别名

我正在学习 nodejs(我喜欢它!)。我试图弄清楚如何使用更短的别名,console.log然后我发现我可以从那时起使用var cout=console.log和使用cout('[string]')。然后当我想使用process.stdout.write并且我也尝试为它创建一个简短的别名时,使用var out=process.stdout.write. 但是当我使用时out('[string]'),我收到以下错误:

_stream_writable.js:220 var state = this._writableState; ^ 类型错误:无法读取未定义的属性“_writableState”

    在 Writable.write (_stream_writable.js:220:19) 在 Socket.write (net.js:670:40) 在 Object。(/home/shayan/Desktop/nodejs/server.js:12:1)

    在 Module._compile (module.js:571:32)

    在 Object.Module._extensions..js (module.js:580:10) 在 Module.load (module.js:488:32) 在 tryModuleLoad (module.js:447:12) 在 Function.Module._load (module .js:439:3) 在 Module.runMain (module.js:605:10) 运行 (bootstrap_node.js:423:7)

这里有什么问题?我怎样才能正确地创建一个短别名process.stdout.write?谢谢

javascript node.js

7
推荐指数
2
解决办法
1401
查看次数

如何确保至少一个字段不为空?(如果只有一个不为空就可以了)

我正在为我正在处理的 api 编写一个注册端点,我正在使用 nestjs 和类验证器来验证输入数据。用户可以使用他们的电话号码或电子邮件地址或两者进行注册。所以为了验证输入,我应该确保至少提供了其中之一。但是我很难弄清楚如何做到这一点而不会弄得一团糟。

这是我的 dto:

export class register {
  @ApiModelProperty()
  @IsNotEmpty()
  @IsAlpha()
  firstName: string

  @ApiModelProperty()
  @IsNotEmpty()
  @IsAlpha()
  lastName: string

  @ApiModelProperty()
  @ValidateIf(o => o.email == undefined)
  @IsNotEmpty()
  @isIRMobile()
  phone: string

  @ApiModelProperty()
  @ValidateIf(o => o.phone == undefined)
  @IsNotEmpty()
  @IsEmail()
  email: string

  @ApiModelProperty()
  @IsNotEmpty()
  password: string
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用了条件验证,它适用于仅提供电话号码或电子邮件地址之一的情况。但问题是,当两者都提供时,其中之一将不会被验证,并且将允许使用无效值。

有什么建议?

node.js class-validator nestjs

5
推荐指数
1
解决办法
3852
查看次数

如何在打字稿中使用联合类型

我在一个项目上使用打字稿,在它的某些部分我必须使用联合类型。但是我收到了一些我不知道如何处理的奇怪错误消息。考虑以下类型:

type body = {
  [_: string]:
    | 'boolean'
    | 'number'
    | 'string'
    | {
        type: 'boolean' | 'number' | 'string'
        optional?: boolean
      }
    | {
        type: 'array'
        items: 'boolean' | 'string' | 'number'
        optional?: boolean
        [_: string]: any
      }
}
Run Code Online (Sandbox Code Playgroud)

我使用[_: string]:是因为我应该能够使用任何任意键。该值可以是指示类型的字符串,也可以是提供更多详细信息的对象。现在考虑以下函数:

function show(data: body) {
  console.log(data)
}
Run Code Online (Sandbox Code Playgroud)

当我用下面的对象调用上面的函数时:

const data = {
  username: { type: 'string', optional: false },
  address: { type: 'string' },
  city: 'string'
}
Run Code Online (Sandbox Code Playgroud)

打字稿给出了以下错误:

'{ 用户名:{ 类型:字符串;可选:布尔值;}; 地址:{ 类型:字符串;}; 城市:字符串;}' 不能分配给'body' 类型的参数。 …

javascript node.js typescript

5
推荐指数
1
解决办法
75
查看次数