小编Tom*_*ski的帖子

如何将Nest.js微服务拆分为单独的项目?

假设我想创建一个简单的影院管理平台.它需要几个微服务:movies,cinemas,payments等.

你会如何在Nest.js中做到这一点?我不希望它们在同一个大文件夹中,因为感觉就像制作巨石.我希望它们与他们自己的git存储库分开使用Nest.js项目,这样我以后就可以用Kubernetes来协调它们了.

怎么样?如果它们是两个独立的项目并且只是共享,那么如何从服务连接cinemas到服务movies,比方说,Redis?

编辑:这不是一般的微服务问题.这是Nest.js具体的问题.我阅读了文档,我知道有@Client连接到传输层的装饰器.我只是想知道在哪里使用该装饰器,并且可能会看到一小段代码"有两个独立的Nest.js存储库如何将它们连接在一起以便它们可以相互通信".

我不关心传输层,我可以弄清楚自己.我只是需要一些关于框架本身的建议,因为我认为文档缺乏.

node.js typescript microservices nestjs

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

如何检查有多少React孩子有一定的道具?

我有两种类型的组件.我们称之为外在和内在.想象一下这样的事情:

<Outer>
    <h4>{this.prop.title} ({this.state.withX}/{this.state.total})</h4>
    <Inner isX/>
    <Inner isX/>
    <Inner/>
    <Inner/>
</Outer>
Run Code Online (Sandbox Code Playgroud)

我有这个功能:

getInitialState: function() {
    return {
        total: React.Children.count(this.props.children),
        withX: /// ??? ///
    };
}
Run Code Online (Sandbox Code Playgroud)

我如何获得这个价值?我试图得到这样的东西:

withX: function() {
    var counter = React.Children.forEach(this.props.children, function(child) {
         // if...
         return //something
    });
return counter;
}
Run Code Online (Sandbox Code Playgroud)

但是......我觉得它会让我无处可去.

javascript reactjs

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

为什么在尝试建立关系时未定义 joinColumns?

我越来越TypeError: Cannot read property 'joinColumns' of undefined at <...>/src/persistence/SubjectOperationExecutor.ts:282:47想创建实体的新对象与关系时的错误。为什么会这样?

在一个实体中,我有:

@Entity('users')
export class User extends WhateverEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string

  @ManyToMany(type => Account, account => account.users, {
    cascadeInsert: true,
    cascadeUpdate: true,
  })
  @JoinTable()
  accounts: Account[]
}
Run Code Online (Sandbox Code Playgroud)

第二个:

@OneToOne(type => User, user => user.id)
owner: User

@ManyToMany(type => User, user => user.accounts)
users: User[]
Run Code Online (Sandbox Code Playgroud)

我这样保存(在哪里owner: Userusers: User[]

const account = new Account()
account.owner = owner
account.users = users || []

return this.accountRepository.save(account)
Run Code Online (Sandbox Code Playgroud)

即使我注释掉account.owner = …

typescript typeorm nestjs

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

用于聚类(和分类)短句的 NLP 词袋/TF-IDF

我想通过它们的字符串键值 ( description)之一对 Javascript 对象进行聚类。我已经尝试了多种解决方案,并希望获得有关如何解决问题的一些指导。

我想要什么:假设我有一个对象数据库。可能有很多(可能有数千个,也可能有数万个)。我需要能够:

  1. 通过逻辑(有点)组中的相似性对对象进行聚类。语义匹配会很棒,但现在只要字符串相似就足够了。在它们被聚类后,我需要为它们中的categoryId每一个分配一些(代表它们所属的集群)。
  2. 每当将新对象添加到数据库时,我都需要将它们分类到现有组/提出新集群。

我还没有尝试解决问题 #2,但这是我尝试解决问题 #1 的方法。

  • 具有 Levenshtein 距离(单链接)的层次聚类- 这里的问题是性能,结果令人满意(我使用了hierarchical-clustering来自 的库npm)但在 150 左右我将不得不等待大约一分钟。不会为数千人工作。

  • TF-IDF,矢量化 + k-means - 性能很棒。它将轻松通过 5000 个对象。但结果肯定是关闭的(可能是我的实现中的一个错误)。我使用(natural库 fromnpm来计算 TF-IDF 和node-kmeans)。

  • Bag-of-Words + k-means - 我现在正在尝试实现这个,还没有任何运气。

对于#2,我想过使用朴素贝叶斯(但我还没有尝试过)。

有什么建议?如果对象只是聚集在一起就好了。如果我可以提取组聚类所依据的标签(如从 TF-IDF 中提取),那就更好了。

algorithm nlp hierarchical-clustering k-means tensorflow.js

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

ElasticSearch - 从索引获取所有可用的过滤器(聚合)

比方说我有:

"hits": [
      {
        "_index": "products",
        "_type": "product",
        "_id": "599c2b3fc991ee0a597034fa",
        "_score": 1,
        "_source": {,
          "attributes": {
            "1": [
              "a"
            ],
            "2": [
              "b",
              "c"
            ],
            "3": [
              "d",
              "e"
            ],
            "4": [
              "f",
              "g"
            ],
            "5": [
              "h",
              "i"
            ]
          }
        }
      },
      {
        "_index": "products",
        "_type": "product",
        "_id": "599c4bb4b970c25976ced8bd",
        "_score": 1,
        "_source": {
          "attributes": {
            "1": [
              "z"
            ],
            "2": [
              "y"
            ]
          }
        }
Run Code Online (Sandbox Code Playgroud)

每个产品都有属性.每个属性都有ID和值.我可以按属性过滤产品,但是现在我正在从MongoDB创建"可能的属性"列表.我想找到一种方法从ElasticSearch单独生成这样的列表(也许只是查询MongoDB以获取更多数据).

我需要的是:

{
  1: [a, z],
  2: [b, c, y],
  etc.
}
Run Code Online (Sandbox Code Playgroud)

这样的聚合怎么样?获取所有可用的属性(按分组attribute.id …

elasticsearch

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

如何获取 neovim LSP 中的所有接口(或任何令牌)?

我试图从给定的缓冲区获取所有接口。为此,我想获取所有令牌并过滤掉除接口之外的所有内容。但是,当我尝试致电 LSP 时:我没有得到任何回复。

local bufnr = vim.api.nvim_get_current_buf()
local params = vim.lsp.util.make_text_document_params()
local result = vim.lsp.buf_request_sync(bufnr, "textDocument/documentSymbol", params, 2000)
print(vim.inspect(result))
Run Code Online (Sandbox Code Playgroud)

我得到的只是一张空地图。我显然错过了一些明显的东西,但我不知道是什么。

{
  [2] = {
    result = {}
  }
}
Run Code Online (Sandbox Code Playgroud)

lua neovim language-server-protocol

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

WebSockets + PHP(Ratchet)登录系统

我知道如何使用PHP创建一个安全的登录系统,包括哈希,盐析和更复杂的安全措施等基础知识.

最近我一直在使用Ratchet和WebSockets.我一直想知道是否可以使用WebSockets创建一个安全的注册/登录系统.

  1. 用户以表格形式输入数据.
  2. 数据经过验证和消毒.
  3. 密码是哈希值.
  4. 一切都通过WebSocket发送到服务器.
  5. PHP将其存储在MySQL数据库中并将密码的哈希值加密.
  6. PHP返回一个通过WebSocket完成注册的回调.
  7. 用户被授予访问该网站的权限.

我觉得它可能会奏效.我的疑惑在这里:ws://协议有多安全?如何确保登录用户后是记录的用户?某种会话?令牌?

是否有这样的框架/库/实现?

问题更多的是出于对新的(有点)技术的好奇心.如果它不起作用,我只会去AJAX POST请求.:)

php websocket ratchet

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

TypeError:POST(MEAN)后无法读取未定义的属性“ body”

我正在尝试将POST数据从AngularJS发送到Express。目前,我正在尝试通过curl发送一些POST内容。

我已经尝试发送数据。它得到发送,我得到200作为响应。但是,每当我尝试通过req.body通过body-parser访问数据时,都会得到500和我在最底部发布的错误。

我对此事做了很多研究(过去4-5个小时...),我想我检查了以下常见问题:

  • 我使用某种请求解析器:body-parser
  • 我在需要路由之前将app.use(...)与body-parser中间件放在一起
  • 我明确告诉POST使用哪种Content-Type
  • 我尝试了application / json和application / x-www-form-urlencoded

我投降。StackOverflowers。请帮帮我。

卷曲:

curl -X POST -H "Content-Type: application/json" -d '{"username": "gala", "email": "ga@ga.g", "password": "123"}' localhost:3000/users
Run Code Online (Sandbox Code Playgroud)

express.js

// glowny plik przygotowujacy aplikacje express

// wczytanie zaleznosci
var express = require('express')
var stylus = require('stylus')
var parser = require('body-parser')
var morgan = require('morgan')
var compress = require('compression')
var methodOverride = require('method-override')

// przygotowanie aplikacji, obsluga middleware i na koncu zwrocenie obiektu aplikacji
module.exports = function() {
    var app = express() …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express

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

语义UI:彼此相邻的卡片?

问题不在于彼此相邻,而是他们都有理由离开并将一个置于另一个之下.我希望他们从左到右一路走,如果另一张卡不适合,请换行到下一行.显示方式:flex工作.

有没有"语义"的方法呢?我唯一能想到的是div在网格中添加一个灵活容器.

我正在使用Meteor和Blaze,但我相信它与它无关.问题在于语义UI和HTML/CSS.

我的HTML看起来像这样:

<div class="ui grid">
    <div class="two wide column">
    </div>

    <div class="twelve wide column">
        {{> card}}
        {{> card}}
        {{> card}}
        {{> card}}
        {{> card}}
        {{> card}}
    </div>

    <div class="two wide column">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

每张卡片模板的位置是:

<div class="ui card">
    <div class="image">
        <img src="http://placehold.it/256x256">
    </div>
    <div class="content">
            <a class="header">Kristy</a>
        <div class="meta">
            <span class="date">Joined in 2013</span>
        </div>
        <div class="description">
            Kristy is an art director living in New York.
        </div>
    </div>
    <div class="extra content">
        <a>
            <i class="user icon"></i>
            22 Friends
        </a> …
Run Code Online (Sandbox Code Playgroud)

html css flexbox semantic-ui

3
推荐指数
2
解决办法
6500
查看次数

如何对修改发送消息的 net.Conn 函数进行单元测试?

首先,让我告诉我,我见过与此类似的其他问题,但我认为没有任何问题真正足够详细地回答它(How does one test net.Conn in unit test in Golang?How does Golang 单元测试中的一个测试 net.Conn?)。

我想测试的是以某种方式响应 TCP 请求的函数。

在最简单的场景中:

func HandleMessage(c net.Conn) {
  s, err := bufio.NewReader(c).ReadString('\n')
  s = strings.Trim(s, "\n")

  c.Write([]byte(s + " whatever"))
}
Run Code Online (Sandbox Code Playgroud)

我将如何对这样的功能进行单元测试,最好使用net.Pipe()不打开实际连接。我一直在尝试这样的事情:

func TestHandleMessage(t *testing.T) {
  server, client := net.Pipe()

  go func(){
    server.Write([]byte("test"))
    server.Close()
  }()

  s, err := bufio.NewReader(c).ReadString('\n')

  assert.Nil(t, err)
  assert.Equal(t, "test whatever", s) 
}
Run Code Online (Sandbox Code Playgroud)

然而,我似乎无法理解将HandleMessage(client)( 或HandleMessage(server)?在测试中实际得到我想要的响应。我可以让它要么阻塞并且根本不会完成,要么它将返回与我在服务器中写入的字符串完全相同。

有人可以帮助我并指出我在哪里犯了错误吗?或者在测试 TCP 功能时指出正确的方向。

testing unit-testing tcp go

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