我们正在使用 NestJS-typescript 开发微服务。
它们每个都公开一个 GraphQL 模式。为了公开单个图,我们也在 NestJS 中使用联合服务。
我试图与“@graphql-eslint/eslint-plugin”集成。
该插件的作用分为2个:
第 2# 节角色需要有关模式文件的附加信息。正如我之前所说,有许多架构和操作文件位于 monorepo 中。
正如文档中提到的,为了允许这些角色,应该定义“parserOptions.schema”。无论我做了什么,我都无法设置该字段,并且收到以下错误:
错误:规则“unique-argument-names”需要设置“parserOptions.schema”并加载架构。有关更多信息,请参阅https://github.com/dotansimha/graphql-eslint#extended-linting-rules-with-graphql-schema
在我的 POV 中,我只希望 linter 访问.graphql整个项目中的所有文件,但我不知道为什么这不起作用以及为什么需要这个字段,因为我已经将 linter 定义为仅 lint*.graphql文件。
为什么第二次调用print_all函数会导致静态语义错误?
#include <list>
using std::list;
class foo {
// ...
};
class bar : public foo {
// ...
};
static void print_all(list<foo*>& L) {
// ...
}
list<foo*> LF;
list<bar*> LB;
// ...
print_all(LF); // works fine
print_all(LB); // static semantic error
Run Code Online (Sandbox Code Playgroud) 我们正在使用 NestJS-typescript 开发微服务,每个服务都公开一个 GraphQL 模式。为了公开单个图,我们也在 NestJS 中使用联合服务。
我试图与“@graphql-eslint/eslint-plugin”集成,并引发了一些奇怪的异常:
未知指令“@key”
这些错误已在 GitHub 问题后解决:https ://github.com/cjoudrey/graphql-schema-linter/issues/210
我根据 Apollo 文档创建了一个具有类型规范的新文件:https://www.apollographql.com/docs/federation/federation-spec/#federation-schema-specation
解决这个问题后,我又收到了一些错误,我不知道它们的含义以及如何解决它们:
解析错误:无法扩展类型“Query”,因为它未定义。您指的是“用户”吗?
无法扩展类型“Mutation”,因为它未定义。
未知类型“查询”。您指的是“用户”吗?
未知类型“Mutation”.eslint
这是我的架构:
extend type Query {
users: [User]
user(email: EmailAddress!): User
}
extend type Mutation {
createUser(userData: UserData!): User
}
type User @key(fields: "email") {
email: String!
name: String
}
input UserData {
email: String!
name: String
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我会收到这些错误?
我正在尝试在单节点集群中设置 ElasticSearch 7.3.1。
我尝试添加:
discovery.type: single-node
但后来我收到以下错误:
java.lang.IllegalStateException:当本地节点 {node-1}{O846-1yHRLiOGzLUx 4RycQ}{KKT2Ljj3QUWiFR4K1ICrDg}{127.0.0.1}{127.0.0.1:9300} 时,无法以 [discovery.type] 设置为 [单节点] 的方式启动{dim}{ml.machine_memory=17179262976, xpack.installed=true, ml.max_open_jobs=20} 在投票配置 VotingConfiguration 中没有法定人数
如果我删除该行discovery.type: single-node,则会出现以下错误:
master 尚未发现或选举,选举需要两个 ID 为 [O846-1yHRLiOGzLUx 4RycQ, j1tBqJEtSXO78j6Ym8OceA] 的节点,已发现 [{node-1}{O846-1yHRLiOGzLUx4RycQ}{KE4tPTGtS7ukT7k-6iLxaw}{127.0.0.1}{127.0.0.1 :9300}{dim}{ml.machine_memory=17179262976, xpack.installed=true, ml.max_open_jobs=20}] 这不是法定人数;发现将继续使用 [127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303, 127.0.0.1:9304, 127.0.0.1:9305, [::1]:9 301, [::1]: 9302、[::1]:9303、[::1]:9304、[::1]:9305] 来自主机提供商和 [{node-1}{O846-1yHRLiOGzLUx4RycQ}{KE4tPTGtS7ukT7k-6iLxaw}{127.0.0.1 }{127.0.0.1:9300}{dim}{ml.machin e_memory=17179262976, xpack.installed=true, ml.max_open_jobs=20}] 来自最后已知的集群状态;节点术语 0,术语 0 中最后接受的版本 0
我在 NestJS 中有一个用户的 DTO 类。我正在使用类验证器包进行许多验证,以强制执行我的逻辑。如果 DTO 定义中不存在某个字段,我想忽略它,甚至抛出错误。这就是我尝试使用“excludeExtraneousValues”标志的原因。当我使用它时,它会忽略所有字段,甚至是 DTO 中定义的字段。
import { ApiPropertyOptional } from '@nestjs/swagger';
import {
IsDefined,
IsEmail,
IsOptional,
IsPhoneNumber,
MaxLength,
ValidateIf,
} from 'class-validator';
export default class UserDTO {
@ApiPropertyOptional()
@MaxLength(254)
@IsEmail()
@IsDefined()
@ValidateIf((object) => object.email || !object.phone_number)
email?: string;
@ApiPropertyOptional()
@MaxLength(15)
@IsPhoneNumber()
@IsDefined()
@ValidateIf((object) => object.phone_number || !object.email)
phone_number?: string;
@ApiPropertyOptional()
@IsOptional()
@MaxLength(40)
name?: string;
}
Run Code Online (Sandbox Code Playgroud)
正如我提到的,我正在使用 NestJS。这是 ValidationPipe 定义:
app.useGlobalPipes(
new ValidationPipe({
transform: true,
stopAtFirstError: true,
transformOptions: { excludeExtraneousValues: true },
}),
);
Run Code Online (Sandbox Code Playgroud)
添加“excludeExtraneousValues”标志后,我无法发送任何值,即使是定义的值。
这是一个错误还是我错过了什么?
我们使用的是 Elasticsearch 7.3.1 版和 Java API。
我们正在实施“免费搜索”,这意味着在 Elasticsearch 中每个段的所有字段中搜索一个值。如果该值出现在段的至少一个字段中,则应返回该值。
到目前为止,我们使用了以下内容:QueryBuilders.multiMatchQuery(value)并且效果很好。
至于今天,我们在映射文件中添加了一些嵌套(Elasticsearch 数据类型)类型的字段。
更改之后,上面的代码不再返回预期的结果。
如何在不指定要搜索的每个字段的情况下在段中的所有字段中实现搜索?
eslint ×2
graphql ×2
graphql-js ×2
nestjs ×2
typescript ×2
c++ ×1
class ×1
dto ×1
function ×1
inheritance ×1
java ×1
kibana ×1
stdlist ×1