小编Bat*_*rka的帖子

带有类验证器的高级条件(可能)?

我有 TypeScript NestJS 项目。

我需要验证传入 API 的 DTO。它可以被描述为“创建项目”,其中我们有建筑类型(房屋、公寓、花园),并且根据该类型我们需要定义:

  • 房屋:楼层,包括房间
  • 公寓: 房间
  • 花园:什么都没有(这是一个“房间”)

房屋类型示例:

{
  type: HOUSE,
  floors: [
    {
      name: "1st floor",
      rooms: [
        {
          name: "bedroom"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

平面类型示例:

{
  type: FLAT,
  rooms: [
    {
      name: "bedroom"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我过去在 的帮助下完成了这件事AJV,但现在当我们迁移到 NestJS 时,我们开始使用class-validator.

我的问题是,我是否可以在 中创建这些高级条件(例如,当类型为 FLAT 时,则仅期望 ROOMS,而不是 FLOORS)class-validator

typescript ajv class-validator nestjs

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

Node.js 中 ES6 模块的内联导入

在 Node.JS(CommonJS 模块)中管理模块的“旧方法”中,您可以执行以下操作:

Express.js 路由示例:app.use('/user', require("./user"));

当我使用 ES6 模块(导入、导出)并通过 babel 的 Node.JS 服务器转录时,如何做到这一点?

我不能只是这样做:app.use('/user', import {user} from './user');

javascript module node.js ecmascript-6 babeljs

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

用于选择包含 JSON 字段值的行的 Sequelize(或清除 SQL)查询?

我的 MYSQL 中有行,我需要 Sequelize.js 查询。

每行都有 JSON 类型的 col,例如:

[
  {id: 1234, blah: "test"},
  {id: 3210, blah: "test"},
  {id: 5897, blah: "test"}
]
Run Code Online (Sandbox Code Playgroud)

我已经id并且需要选择将其包含id在数组中至少一个对象中的行。

mysql json node.js sequelize.js

4
推荐指数
1
解决办法
2903
查看次数

pm2 - 非 root 用户权限的启动脚本被拒绝

我刚刚安装了 pm2(在 Debian 9 上),我需要运行少数用户的 NodeJS 服务器。每个用户都有自己的 NodeJS 服务器,我需要在它们下运行。不在根下。

例如我有用户“user1”:

  • 我可以正常控制pm2
  • 用于启用启动脚本的 user1 上的此命令: pm2 startup
  • 然后我将输出的命令复制粘贴到 root 并执行...
  • 现在已创建给定用户的启动脚本

pm2 仍然适用于 user1,但重启后我无法控制 pm2 并且我收到此错误: [PM2][ERROR] Permission denied, to give access to current user: $ sudo chown user1:user1 /home/user1/.pm2/rpc.sock /home/user1/.pm2/pub.sock

如果我在 root 上执行这个命令,我可以再次控制 user1 上的 pm2,但是所有 NodeJS 服务器都以 root 身份执行!!

每次重启我都需要“授予”权限。

如何解决这个问题?

root node.js pm2

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

Mongoose 不同的选择但整个对象

在 Node.js 中使用 Mongoose。我在 MongoDB 中有这样的模型结构:

{
   "_id":"5ac17dc27707e91ed00cea7d",
   "appid":123,
   "name":"Stellaris",
   "code":"xxxxxxxxxxx"
}
Run Code Online (Sandbox Code Playgroud)

我需要选择所有项目,但当有多个相同 appid 的项目时,仅选择一个或每个 appid。Distinct 仅返回一个字段的数组。如何选择整个对象,而不是具有相同 appid 的项目仅出现一次?

mongoose mongodb node.js

3
推荐指数
1
解决办法
2552
查看次数

如何在React内联CSS样式中添加!important

如何添加!important到我的内联CSS属性?如果我在它之后添加它2px只是忽略整个风格.

import React from "react";

export default class Todo extends React.Component {
    render() {
        const {text} = this.props;

        const cardStyles = {
            borderWidth: '2px'
        };

        return (
            <div class="card mb-2 border" style={cardStyles}>
                <div class="card-body">
                    <h5 class="card-title m-0">{text}</h5>
                </div>
            </div>
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

css reactjs

2
推荐指数
1
解决办法
2544
查看次数

2018 年还需要 react-tap-event-plugin 吗?

现在还需要https://github.com/zilverline/react-tap-event-plugin吗?或者它已经直接实现到 React 的源代码中,并且点击延迟消失了。

reactjs material-ui react-redux

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

2018年的Callback vs Promise

如今,异步功能的标准是什么?

我不是在这里问基于选项的问题,而是要问2018年使用了更多的东西以及什么对将来的可伸缩性更好。

样式1:

const client = new SteamUser();
    exports.setup = callback => {
        client.on('webSession', async (sessionID, cookies) => {
            offers.setup(client, cookies, callback);
        });

        client.on('error', err => {
           callback(error)
        });
    };
Run Code Online (Sandbox Code Playgroud)

风格2:

const client = new SteamUser();
    exports.setup = async () => {
        return new Promise(function(resolve, reject){
            client.on('webSession', async (sessionID, cookies) => {
                resolve(await offers.setup(client, cookies));
            });

            client.on('error', err => {
               reject(error)
            });
         });
        };
Run Code Online (Sandbox Code Playgroud)

两者都通过以下方式在另一个文件中调用:

    try{
await module.setup();
} catch(err){
console.log(err);
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise ecmascript-6

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