小编Far*_*rad的帖子

如何将对象中的某些字段设为必填

我需要一个接口来根据需要制作其他接口的某些字段。例如:我有 IUserInterface:

interface IUser {
  name: string;
  role?: string;
}

interface IUserFromDB {
  id: number;
  name: string;
  role: string;
}
Run Code Online (Sandbox Code Playgroud)

当我创建新用户时,角色是可选的。数据库设置默认角色,当我从数据库中选择用户时 -role必须位于userObject. 我可以像上面写的那样编写接口,但在实际项目中,这种方法会创建大量冗余代码。所以,我需要一些界面,帮助我获取旧界面并根据需要创建一些可选字段。

我想要这样的东西:

interface IUser {
  name: string;
  role?: string;
}

type IUserFromDB = WithRequired<IUser, 'role'[|...]> & {
  id: number;
  ...;
};
Run Code Online (Sandbox Code Playgroud)

请帮我创建这个WithRequired类型。

typescript typescript-typings

16
推荐指数
2
解决办法
2万
查看次数

如何将 Nestjs 应用程序与 webpack 捆绑在一起

我有一个 Nestjs 应用程序,我需要将它与 webpack 捆绑在一起。捆绑包应包含整个脚本和所有文件。所以我创建了我的 webpack 配置:

const webpack = require('webpack');
const path = require('path');

module.exports = {
  entry: {
    backend: './src/index.ts',
  },
  target: 'node',
  module: {
    rules: [
      {
        test: /.ts$/,
        use: 'ts-loader',
      },
      {
        test: /\.(graphql|gql)$/,
        exclude: /node_modules/,
        loader: 'webpack-graphql-loader',
      },
      {
        test: /\.mjs$/,
        include: /node_modules/,
        type: "javascript/auto",
      }
    ],
  },
  externals: ['fsevents'],
  mode: 'production',
  resolve: {
    extensions: ['.ts', '.mjs', '.js', '.json'],
  },
  output: {
    path: path.join(__dirname, 'bundled'),
    library: 'handler',
    libraryTarget: "commonjs2"
  },
  plugins: [
    new webpack.IgnorePlugin({
      checkResource(resource) …
Run Code Online (Sandbox Code Playgroud)

bundling-and-minification webpack nestjs

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

NAT 网关和阻止入站流量的 ACL 之间有什么区别

我阅读了有关 aws VPC 的内容,并尝试寻找使用 NAT 的任何意义。如果我理解正确的话,当我们拥有具有两个子网(公共子网和私有子网)的 VPC 时,就会使用 NAT。如果我们想允许私有子网向全球网络发出请求(例如软件更新),但阻止所有入站流量 - 我们可以在公共子网中设置 NAT 并将该 NAT 与私有子网连接。

在此输入图像描述

但同时我们可以为私有子网创建 ACL 并阻止所有入站流量。因此,如果需要,它将能够下载软件更新。

那么,如果以上都是正确的,为什么我们需要 NAT?

amazon-web-services amazon-vpc

8
推荐指数
1
解决办法
2712
查看次数

数据库连接总是在 NestJS + TypeORM 中打开吗?

在我的第一个项目,我们使用expressmysql图书馆没有任何ORM,我们打开连接时,控制器启动和关闭在这方面finaly块。我一直认为这个方法是对的。

但是现在我开始用 NestJS + TypeORM 做一个应用程序,当我的服务器启动时 - 连接已准备好打开!我想知道是否可以,开始谷歌但更困惑。

例如人们说

“你必须只在需要的时候打开连接,使用后立即关闭它,因为你不应该保持 1 个打开的连接,其他用户可能需要它”。

他们还说:

“你必须使用连接池。连接池打开 1+ 个连接并保持它们打开。当你的应用程序中的某个线程需要它时,它不会浪费时间打开”..

什么?这两个句子互相排斥。

所以,

问题1:谁是对的?

问题2:

如果 TypeORM 使用“连接池”,那么它的优势是什么,如果我的控制器将始终使用“默认连接”?

    @Injectable()
    export class UsersService {
      constructor(
        @InjectRepository(User)
        private usersRepository: Repository<User>,
      ) {}
    
      findAll(): Promise<User[]> {
        return this.usersRepository.find();
      }
    }
Run Code Online (Sandbox Code Playgroud)

如果 1kk 用户同时请求此控制器 - TypeORM 不会在用户池中创建额外连接以防止一个连接过载。那么,TypeORM 连接池有什么意义呢?

database database-connection typeorm nestjs

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

Android Documents Provider 如何使用以及我需要它吗?

我将创建一个用于从 Internet 访问文件的应用程序。我不想实现 UI,而是让它们从其他文件管理器中可见。因此,我选择实现一个文档提供程序。我做到了。在接下来的图片中,您可以看到我打开“文件”应用程序,找到“我的文档提供程序”并可以访问其文件。

在此输入图像描述 在此输入图像描述 在此输入图像描述

然而,它是一个模拟器。当我尝试在物理设备上使用该应用程序时,我发现我无法查看文档提供者。我使用小米红米 Note 5 Pro(android 9.0),没有“文件”应用程序。我测试了 Google Play 中排名前 20 的文件管理器,甚至 MIUI 内置的文件资源管理器,但它们都不能向我显示我的“我的文档提供程序”。

仅当尝试从 Gmail 应用程序附加文档时,我才设法看到我的文档提供程序。但这不是我需要的。

问题:

  1. 我认为 Documents Provider 不是我所需要的,对吗?
  2. 我对吗?这是与使用存储访问框架的其他客户端应用程序(如 Gmail、照片编辑器等)共享文件的一种额外方式,但并不是设计为用作访问文件的主要方法?
  3. 我是否必须使用 UI 和文件资源管理器的完整功能来实现自己的活动,作为用户访问其文件的主要方法,对吗?(就像 Google Drive 应用程序一样 - 它同时具有:自己的 UI,用于管理文件和可从系统选择器访问的文档提供程序)

更新

最后我找到了解决方案。据我了解,标准应用程序“文件”内置于任何设备中。然而,制造商可能“隐藏”这个应用程序并提供一些模拟。MIUI 上有一个“文件管理器”。在许多三星设备以及 Pixel 2 XL 上,它是“Google 文件”应用程序。他们都没有看到文档提供者。只有“文件”应用程序可以。

当您使用 SAF 时,“文件”应用程序仍然可以作为一个选项进行访问(例如使用 ACTION_OPEN_DOCUMENT 启动 Intent)。但您仍然无法独立启动该应用程序。不过,您可以从 Google Play 下载“文件快捷方式”。打开它时,您可以选择一个应将“文件快捷方式”作为快捷方式的应用程序。我选择“文件”应用程序,一切正常(直到我选中“记住我的选择”选项才起作用)。在 Pixel 2 和 Redmi Note 5 上,我都可以看到我的文档提供程序。这是一个好消息,因为我不必浪费时间来创建 UI!

PS 请注意,我上面描述的内容并非来自可靠来源。根据我的观察和理解,我使用了“隐藏应用程序”一词以及在任何设备上预安装“文件”的事实。

PPS 另外,我发现在 Pixel 2 上的“Google 文件”应用程序中还有一种打开“文件”的方法:浏览 -> 其他存储 -> 系统痕迹。由于某种原因,红米 Note 5 上没有“其他存储”按钮。

android storage-access-framework documents-provider

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

Material-ui 中的高级样式

我开始研究material-ui并在SandBox中创建一个简单的应用程序: https: //codesandbox.io/s/eager-ride-cmkrc

jss 的风格对我来说很不寻常,但是如果你帮我做这两个简单的练习,那么我就会明白一切。

第一:我想要将ButtonLeft和的共同属性合并ButtonRight到新类中并扩展它:(https://github.com/cssinjs/jss-extend#use-rule-name-from-the-current-styles-object

ButtonControll: {
    display: "none",
    position: "absolute",
    fontSize: "24px"
},
ButtonLeft: {
    extend: 'ButtonControll',
    left: "0",
},
ButtonRight: {
    extend: 'ButtonControll',
    right: "0",
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用=(

第二:我希望当您将鼠标悬停在容器上时出现箭头,所以我这样写:

"&:hover .MuiIconButton-root": {
    display: "block"
}
Run Code Online (Sandbox Code Playgroud)

问题:MuiIconButton-root它是所有 IconButtons 的基类名称吗?但我想要这样的东西:

"&:hover ButtonLeft": {
    display: "block",
    backgroundColor: 'red' 
},
"&:hover ButtonRight": {
    display: "block",
    fontSize: '50px' 
}
Run Code Online (Sandbox Code Playgroud)

请帮助我完成这两个简单的任务,然后我就会明白一切=)

javascript reactjs material-ui jss

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