小编J.F*_*.F.的帖子

本地主机没有发送任何数据。ERR_EMPTY_RESPONSE 节点

我正在尝试将此应用程序转换为 docker,但出现此错误。

这是我的express.js 文件

const express = require("express");
const app = express();
const portNumber = 3000;
const sourceDir = "dist";
const expressStaticGzip = require("express-static-gzip");
app.use(
  "/",
  expressStaticGzip(sourceDir, {
    enableBrotli: true,
    orderPreference: ["br", "gz"],
    setHeaders: function(res, path) {
      res.setHeader("Cache-Control", "public, max-age=31536000");
    }
  })
);

app.listen(portNumber, () => {
  console.log(`Express web server started: http://localhost:${portNumber}`);
  console.log(`Serving content from /${sourceDir}/`);
});
Run Code Online (Sandbox Code Playgroud)

这是我的 dockerfile

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "express.js" ]
Run Code Online (Sandbox Code Playgroud)

感谢帮助。

node.js docker

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

为什么 gRPC 比发送数组的 HTTP API 慢得多

我正在 Node.JS 中实现的服务之间进行负载测试,同一台机器上的两个服务都通过localhost.

有 REST 和 gRPC 客户端和服务器文件。主要目标是证明 gRPC 比 HTTP 调用更快,因为使用 HTTP/2、使用比编码/解码 JSON 更高效的协议缓冲区......

但在我的测试中(发送整数数组)gRPC 慢得多。

对于这两种实现来说,代码都非常简单,我有一个辅助类来生成大小为(以 MB 为单位)的对象:0.125、0.25、0.5、1、2、5、20。REST 和 gRPC 服务器使用此辅助类,因此对象发送是一样的。

有效负载中发送的对象如下所示:

{
  message: "Hello world",
  array: []
}
Run Code Online (Sandbox Code Playgroud)

数组中填充数字,直到达到所需的大小。

我的 .proto 是这样的:

syntax = "proto3";

service ExampleService {
    rpc GetExample (Size) returns (Example) {}
}

message Size {
    int32 size = 1;
}

message Example {
   string message = 1;
   repeated int32 array = 2;
}
Run Code Online (Sandbox Code Playgroud)

另外,我运行的应用程序仅测量一次调用,不创建循环并查找平均值,也不用回调处理测量时间。所以我运行该应用程序 10 次并计算平均值。

休息服务器:

app.get('/:size',(req,res) => {
    const size …
Run Code Online (Sandbox Code Playgroud)

rest protocol-buffers grpc grpc-node

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

MongoDB/Mongoose:使用 findOneAndUpdate() 更新整个文档

我想使用该findOneAndUpdate()方法来创建一个不存在的文档,或者如果存在则更新它。考虑以下代码:

SampleComment = new Comment({
    id: '00000001',
    name: 'My Sample Comment',
    ...
})
Run Code Online (Sandbox Code Playgroud)

这是我试图找出是否SampleComment已经存在,如果存在,更新它,否则创建它:

Comment.findOneAndUpdate(
    { id: SampleComment.id }, 
    { SampleComment }, // <- NOT PASSING THE OBJECT
    { upsert: true, setDefaultsOnInsert: true }, 
    function(error, result) {
        ...
});
Run Code Online (Sandbox Code Playgroud)

我试图将模型实例作为第二个参数中的对象传递,但结果仅返回模型的默认值。文档本身也是如此。

如何SampleComment在第二个参数中正确传递整个对象?

javascript mongoose mongodb

8
推荐指数
2
解决办法
7312
查看次数

在 docker 容器中运行 protoc 命令

我正在尝试将protoc命令运行到 docker 容器中。

我尝试使用gRPC 映像,但未protoc找到命令:

/bin/sh: 1: 协议:未找到

所以我假设我必须使用RUN说明手动安装,但是有更好的解决方案吗?已安装官方预编译映像protoc

另外,我尝试通过 Dockerfile 安装,但又出现了protoc: not found

这是我的 Dockerfile

#I'm not using "FROM grpc/node" because that image can't unzip
FROM node:12 

...

# Download proto zip
ENV PROTOC_ZIP=protoc-3.14.0-linux-x86_32.zip
RUN curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/${PROTOC_ZIP}
RUN unzip -o ${PROTOC_ZIP} -d ./proto 
RUN chmod 755 -R ./proto/bin
ENV BASE=/usr/local
# Copy into path
RUN cp ./proto/bin/protoc ${BASE}/bin
RUN cp -R ./proto/include/* ${BASE}/include

RUN protoc -I=... …
Run Code Online (Sandbox Code Playgroud)

protocol-buffers proto docker grpc grpc-node

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

使用正则表达式搜索 mongodb _id 字段

在我的沙箱中,我有一个集合,该集合的唯一键 ( _id) 是来自另一个数据库的唯一字符串。我已经预先分配了文件,它们看起来像这样

数据看起来像这样

{ _id : "UNIQUEKEY1:1463670000000", data: {value:NaN} }
{ _id : "UNIQUEKEY2:1463670000000", data: {value:NaN} }
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式查询数据

{ "_id": {$regex : "/^UNIQUEKEY1.*/i"} }
Run Code Online (Sandbox Code Playgroud)

我已阅读,你可以查询_id它是否在布兰登的评论字符串这里

我不希望另一个属性的开销只是搜索何时_id可以为我提供足够的

regex mongodb

5
推荐指数
0
解决办法
4652
查看次数

Spring Boot 中未使用 @Indexed 创建 Mongo 索引

我知道有类似的问题,例如:Spring boot / mongo wont create index with the index comment

\n

Github 中的问题还包括“spring.data.mongodb.auto-index-creation=true”无法正常工作

\n

我还尝试过这个 Baeldung 指南:Spring Data MongoDB \xe2\x80\x93 Indexes, Annotations and Converters

\n

所以问题是我正在尝试使用 @Indexed 注释向现有集合添加索引,如下所示:

\n
@CreatedDate\n@Indexed(name="timestamp_index", expireAfterSeconds=100))\nprivate Date timestamp;\n
Run Code Online (Sandbox Code Playgroud)\n

该字段是在将元素插入数据库时​​自动创建的时间戳。

\n

该类也有@Document标签。

\n

那么,我尝试了什么?

\n

spring.data.mongodb.auto-index-creation: true根据其他答案,我做的第一件事就是以这种方式添加:

\n
@CreatedDate\n@Indexed(name="timestamp_index", expireAfterSeconds=100))\nprivate Date timestamp;\n
Run Code Online (Sandbox Code Playgroud)\n

这不起作用......但我也读到问题可能出在我上课时AbstractMongoClientConfiguration

\n

目前该项目没有该类,但存在MongoConfiguration带有该@Configuration标签的类。我不知道这是否会干扰或其他什么。

\n

类是这样的:

\n
spring:\n  data:\n    mongodb:\n      uri: ${env.mongo-database.url}\n      auto-index-creation: true\n
Run Code Online (Sandbox Code Playgroud)\n

这个类创建一个@Bean命名的mongodb所以我尝试在这里手动添加自动索引为 …

java mongodb spring-boot mongo-index

5
推荐指数
0
解决办法
2715
查看次数

如何将 .then .catch 转换为 async/await

使用 React/Redux 前端和我自己的 nodejs/express api 开发登录表单/注销按钮。登录表单出现问题。大多数时候它工作得很好,但我经常遇到错误。第一个错误是forbidden,它告诉我用户在发送请求之前尚未完全通过身份验证userDetails

还有另一个错误,Redux 不会更改用户的角色,我需要动态渲染导航。我认为将 handleLogin 转换为 async/await 将是解决方案,但我相信我做得不对。

import React from 'react';
import { login, userDetails } from '../axios/homeApi';
import { useForm } from 'react-hook-form';
import { useDispatch } from 'react-redux';
import { setLogin, setRole } from '../redux/actions';
const LoginForm = () => {
const { handleSubmit, register, errors } = useForm();
const dispatch = useDispatch();

const handleLogin = values => {
    login(values.email, values.password)
    .then(res => {
        const token = res.data.token;
        window.localStorage.setItem('auth', …
Run Code Online (Sandbox Code Playgroud)

javascript async-await react-redux

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

自动装配和在 Spring Boot 的自动装配类上使用 new 关键字的区别?

@Autowired
private EmployeeService employeeService;
Run Code Online (Sandbox Code Playgroud)

对比

@Autowired
private EmployeeService employeeService = new EmployeeService();
Run Code Online (Sandbox Code Playgroud)

使用new EmployeeService()上比只使用自动装配类不同new EmployeeService()

java spring autowired spring-annotations spring-boot

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

Jackson objectMapper 无法读取 UTF-8

正如标题所示,Jackson 无法读取 utf-8。

\n

第 37 行:

\n
ArrayNode arrayNode1 = objectMapper.readValue(bansFile, ArrayNode.class);\n
Run Code Online (Sandbox Code Playgroud)\n

21:48:55 [严重] com.fasterxml.jackson.core.JsonParseException:无效的 UTF-8 起始字节 0xb3\nat [来源:(文件);行:18,列:38]

\n

这里是第18行,无法读取UTF-8“\xc5\x82”

\n

"reason" : "管理员 nie poda\xc5\x82 powodu banicji"

\n

整个堆栈跟踪

\n
21:48:55 [SEVERE]     at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1840)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:712)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidInitial(UTF8StreamJsonParser.java:3569)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidChar(UTF8StreamJsonParser.java:3565)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishString2(UTF8StreamJsonParser.java:2511)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishAndReturnString(UTF8StreamJsonParser.java:2437)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.getText(UTF8StreamJsonParser.java:293)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:267)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:437)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ArrayDeserializer.deserialize(JsonNodeDeserializer.java:141)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer$ArrayDeserializer.deserialize(JsonNodeDeserializer.java:126)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)\n21:48:55 [SEVERE]     at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070)\n21:48:55 [SEVERE]     at koral.proxyban.listeners.ServerConnect.isBanned(ServerConnect.java:37)\n21:48:55 [SEVERE]     at koral.proxyban.listeners.ServerConnect.onProxyConnect(ServerConnect.java:25)\n …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

Spring Data @Query + 规范

你能帮我连接规范和查询吗?分页工作完美,但我对规范有问题,没有在其中添加搜索参数。

public interface RakebackRepository extends JpaRepository<Rakeback, Long>,JpaSpecificationExecutor<Rakeback> {

    @Override    
    @Query(value = "SELECT new domain.model.poker.rakeback.Rakeback(ppr.playerId, SUM(ppr.rakeSum), SUM(ppr.fullRakeBackSum), max(ppra.rakeBackBalance), max(ppra.rakebackRank)) FROM Rakeback as ppr LEFT JOIN ppr.Rakeback as ppra on ppra.status = 'active' LEFT JOIN ppra.rakebackRank as rbb on ppra.rakeBackRankId = rbb.id GROUP BY ppr.playerId ")   
    Page<Rakeback> findAll(Specification<Rakeback> specification, Pageable pageable);
    
    }
Run Code Online (Sandbox Code Playgroud)

这是来自日志的 SQL

select pokerplaye0_.player_id as col_0_0_,  sum(pokerplaye0_.rake_sum) as col_1_0_,  sum(pokerplaye0_.full_rake_back_sum) as col_2_0_,  max(pokerplaye1_.rake_back_balance) as col_3_0_,  max(pokerplaye1_.rake_back_rank_id) as col_4_0_ 
from rakeback.players_rakebacks pokerplaye0_  
left outer join rakeback.players_rakebacks pokerplaye1_ on pokerplaye0_.player_id=pokerplaye1_.player_id and (pokerplaye1_.status='active') …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate specifications jpa

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

Firebase verifyIdToken() 在缓存时是否需要为每个新令牌调用 Firebase API?

我在一个项目中使用 Firebase,其中使用 Firebase 令牌 ID 作为不记名令牌来对用户进行身份验证。

项目工作正常,但我想知道verifyIdToken()缓存时如何工作。

现在,该项目的工作方式如下:

  1. 客户端登录客户端APP并检索Firebase tokenId
  2. 客户端调用服务器使用tokenId作为Bearer token进行授权。
  3. 服务器用于verifyIdToken()验证用户。

问题与方法有关verifyIdToken(),以及是否有必要在每个新令牌上调用 Firebase API。

我读过这个问题,其中说:

verifyIdToken() 还针对性能进行了优化。它缓存 Firebase 令牌公共证书(有效期 6 小时),用于验证本地计算机上的令牌签名。除了下载公共证书之外,不涉及任何 RPC。

另外,这个答案说:

当您调用 verifyIdToken 时,管理 SDK 使用公钥对令牌进行解码并验证签名是否有效。它从 Google 服务器下载此密钥,但会缓存 24 小时

以及评论:

verifyIdToken() 从 Google 服务器获取公钥。但这些会被缓存长达 24 小时,因此 RPC 调用开销会被摊销。

但是,下载并缓存什么证书?来自用户还是项目?

那么,服务器是否需要在每次从客户端获取新数据时调用 Firebase API tokenId,或者服务器可以在没有互联网连接的情况下使用缓存的证书进行解码吗?

主要目标是减少对 Firebase API 的调用次数,因此我想知道如果每 24 小时下载一次 Perm 缓存,服务器是否可以在没有互联网的情况下解码项目的每个有效令牌。

提前致谢。

google-api firebase firebase-authentication firebase-admin

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

如何在 MongoDB find() 中小写字段数据

在我的数据库集合中,我有两个对象。

[
  {"_id" : 1, name: "notLowercased"},
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

我正在使用 find 和 $regex 来查找包含某些字符串的名称。

data = await CatalogModel.find({name: {$regex : searcher.toString().toLowerCase()}})
Run Code Online (Sandbox Code Playgroud)

例如我的输入字符串是“小写”。

结果我得到了一个数组

[
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

但我想得到这样的结果:

[
  {"_id" : 1, name: "notLowercased"},
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

我知道这是因为名称“notLowercased”不是小写而发生的。

如何在此请求中小写名称字段?

javascript mongoose mongodb express

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