所以我试图在我的客户端 GraphQL 查询中获得安全(所以如果有更好的方法让我知道)。
但是我一直在做的是像这样定义我的查询。
export const tenantManagePageQuery = async (tenantId: string) =>
graphQLClient.request<{
tenants: TenantManagePageQueryTenant[];
}>(
/* GraphQL */ `
query tenants($tenantId: String!) {
tenants(tenantIds: [$tenantId]) {
id
description
name
approvedUsers {
id
alias
}
pendingUsers {
id
alias
}
}
}
`,
{ tenantId },
);
Run Code Online (Sandbox Code Playgroud)
为了定义TenantManagePageQueryTenant类型,我做这样的事情
interface TenantManagePageQueryTenant
extends Pick<Tenant, 'id' | 'description' | 'name'> {}
Run Code Online (Sandbox Code Playgroud)
基本租户模型是我的 GQL 模型类型。
无论如何要执行这种 Pick 语句,但还要选择嵌套的属性。
就像是
interface TenantManagePageQueryTenant
extends Pick<Tenant, 'id' | 'description' | 'name' | Pick<approvedUser| 'id' | …Run Code Online (Sandbox Code Playgroud) 我决定将Material Ui React添加到我的应用程序中。我打算最少使用这个。到目前为止我在一个地方使用它
import TextField from "@material-ui/core/TextField";
render() {return <TextField ... />
Run Code Online (Sandbox Code Playgroud)
我使用默认的 CRA webpack 配置,我的假设是,我不使用的库中的任何内容都不会添加到我的包中。但是,当我使用捆绑分析器时,我看到了这一点。
Create-React-App 是否像我想象的那样不支持死代码的树摇动,或者我做错了什么。
所以在我的数据库模式中,我有这样的东西
/collections/users/userId1 {
...,
id,
relatedContracts: [id1, id2, id3]
}
/collections/contracts/contractId {
...,
id,
}
Run Code Online (Sandbox Code Playgroud)
在我的 Firebase 安全规则中,我有这个
match /contracts/{contract} {
function isOwnContract() {
return request.auth.id == resource.data.creatorId || request.auth.id == recipientId
}
allow read, write: if isOwnContract()
}
Run Code Online (Sandbox Code Playgroud)
现在我对如何过滤客户端以仅获取我的相关合同感到非常困惑。如果引入了安全规则,我将无法再对客户端进行过滤。
我知道这存在
firestore.collection(CONTRACTS).where(id, "==", contractId)
Run Code Online (Sandbox Code Playgroud)
但是我如何根据多个 id 进行过滤
所以我有一个依赖包,我将它拉到我的 node_modules 文件夹中。这个包有一个像这样的导出
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from './client';
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我使用https://github.com/standard-things/esm。在我的节点加载器中
node -r esm index.js.
但是,这不适用于我使用 Jest 的测试。
我似乎无法弄清楚如何让 Jest 为我转换这些导入。我已经尝试了很多东西,我的配置文件的当前状态是。
// babel.config.js
// babel.config.js
module.exports = {
presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'],
plugins: ['@babel/plugin-transform-modules-commonjs'],
};
Run Code Online (Sandbox Code Playgroud)
const { pathsToModuleNameMapper } = require('ts-jest/utils');
const { compilerOptions } = require('./tsconfig');
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['<rootDir>/tests/**/*.{ts,js}'],
testPathIgnorePatterns: ['global.d.ts', 'utils.ts', '<rootDir>/node_modules/'], // tried with and without this
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }),
};
Run Code Online (Sandbox Code Playgroud)
仍然不断收到该错误。任何人都有一个建议。
所以我在FORTRAN中有一些看起来像这样的线条.
call const (hsno, npoi*nsnolay, 0.0)
Run Code Online (Sandbox Code Playgroud)
我一直在使用正则表达式和python字符串函数来解析这些代码并编辑一些变量.但是像上面那样的线条给我一个问题,因为字符串不会在括号上分开.
我希望它是:
[(,hsno, npoit, * nsnolay, 0.0, )].
Run Code Online (Sandbox Code Playgroud)
不过它的作用是什么
[(hsno,...]
Run Code Online (Sandbox Code Playgroud)
如果后跟一个单词和一个逗号,我希望它分成括号
有没有一种简单的方法可以做到这一点.
到目前为止,我已经编程了大约一年,我所做的一切都是Java和C.我会用这些语言称自己的中级,但我决定尝试学习python.
我下载了网站的python 3.3,我有点困惑.我测试了Python Shell中的一些程序,它似乎更像是一个计算器而不是一种语言.例如,一旦我点击输入它编译并运行我在那里的任何代码.我应该用什么来编写带有类和函数的更大的程序.