小编Iva*_*nha的帖子

从 jeft 连接查询中选择特定列,TypeORM

我有一个任务来获取有关数据库中用户的关键信息。有很多left joins,查询的工作速度很慢。我试图以某种方式优化它,我决定只选择特定的字段(目前只选择记录的 id)。

这是我查询的一部分。我只需要获取属于用户的每个事件的 id,并对数据库中的每个用户执行相同的操作。理想情况下,我应该得到一组 id。

我试图建立一个子查询,但找不到一些解释的例子。官方文档中的一个例子对我来说还不够。

当我运行它时,我收到错误

syntax error at or near "SELECT"
QueryFailedError: syntax error at or near "SELECT"
Run Code Online (Sandbox Code Playgroud)
this.createQueryBuilder('profile')
            .leftJoinAndSelect('profile.avatarPhoto', 'avatarPhoto')
            .leftJoinAndSelect('profile.coverPhoto', 'coverPhoto')
            .leftJoinAndSelect('profile.primaryCountry', 'country')
            .leftJoinAndSelect('profile.primaryCity', 'city')
            .leftJoinAndSelect('profile.images', 'image')
            .leftJoinAndSelect('profile.practicedSports', 'practicedSport')
            .leftJoinAndSelect(
                (subQuery) =>
                    subQuery
                        .subQuery()
                        .createQueryBuilder()
                        .select(['id'])
                        .leftJoin('user', 'user')
                        .from(SportEvent, 'event'),
                'event',
                'event.user.id = profile.id',
            )
            // .leftJoinAndSelect('profile.sportServices', 'service')
            // .leftJoinAndSelect('profile.lessons', 'lesson')
            // .leftJoinAndSelect('profile.activityRequests', 'request')
            .leftJoin('profile.userAuth', 'auth')
            .where('auth.registered = true')
            .andWhere('auth.blocked = false')
            .take(params.pageSize)
            .skip(itemsNumber)
            .getMany()
Run Code Online (Sandbox Code Playgroud)

这是生成的SQL代码

SELECT DISTINCT "distinctAlias"."profile_id" as "ids_profile_id" 
FROM (SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js typeorm nestjs

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

在 React 应用程序中保存 api 密钥的真正位置/方式是什么?

我正在团队中从事一个反应项目。我们正在使用一些第三方服务,这些服务需要 API 密钥。现在我们将这些密钥存储在代码中。据我所知,这不好而且危险。

我试图找到一些这方面的建议。我现在看到的解决这个问题的所有方法是:

  • 创建.env文件并将所有密钥存储在那里(但在这种情况下,我需要与团队的其他成员共享我的密钥)
  • 或将所有密钥移至服务器并始终调用服务器以获得所需信息(但在这种情况下,我不知道如何使用需要密钥的外部组件,例如谷歌地图/地点/绘图等在)。

在此输入图像描述

您在团队中使用哪种方式?为什么?我想了解对我来说最好的解决方案是什么。谢谢!

frontend google-maps reactjs

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

DOMException:无法在“XMLHttpRequest”上执行“open”:React 应用程序中的 URL 无效

我面临着一个神秘的错误。当我尝试向服务器发送一个特定查询时,我收到以下错误

\n\n
DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL\nat dispatchXhrRequest (http://localhost:6789/static/js/20.chunk.js:180790:13)\nat new Promise (<anonymous>)\nat xhrAdapter (http://localhost:6789/static/js/20.chunk.js:180773:10)\nat dispatchRequest (http://localhost:6789/static/js/20.chunk.js:181396:10)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这里我记录了实际的 url 字符串

\n\n
http://localhost:3000\xe2\x80\x8b/users\xe2\x80\x8b/5\xe2\x80\x8b/payments\xe2\x80\x8b/disconnect\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我发送相同的查询,但从我的托管到开发服务器,我会看到错误 404 和像这样的 url

\n\n
https://example.com/users%E2%80%8B/5%E2%80%8B/payments%E2%80%8B/disconnect\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我发送查询的函数

\n\n
  const query = `${url}\xe2\x80\x8b/users\xe2\x80\x8b/${userId}\xe2\x80\x8b/payments\xe2\x80\x8b/disconnect`;\n\n  console.debug('Url', query);\n\n  try {\n    const { status } = await axios.delete(query);\n    return status;\n  } catch (e) {\n    console.debug(e);\n    return 500;\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

有趣的是,所有其他端点都工作正常。Chrome 和 Firefox 上的行为相同。

\n\n

什么会导致这样的问题?

\n

rest reactjs axios nestjs

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

无法使用无服务器框架和 TypeScript 从 Lambda 层导入模块

我的无服务器应用程序中有多个功能。其中两个用于 REST 端点,一个是 SQS 处理程序。他们都使用相同的库。因此,我想将它们移至 Lambda Layer 并跨函数共享以减小大小。

我正在使用 Serverless Framework 2.46、TypeScript 4.3 和 NodeJS 14。我有以下项目结构:

/
 - layers/
   - nodejs/
     - node_modules/
     - package.json
 - src/
   - handlers/ - here are my handlers 
   - etc...
Run Code Online (Sandbox Code Playgroud)

我已将 TypeScript 配置为从图层文件夹导入库,如下所示import middy from '/opt/nodejs/@middy/core';。这是我的 tsconfig

{
  "compilerOptions": {
    "preserveConstEnums": true,
    "strictNullChecks": true,
    "sourceMap": true,
    "allowJs": false,
    "target": "ES2020",
    "module": "CommonJS",
    "outDir": ".build",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "lib": [
      "ES6",
      "ES2019",
      "ES2020"
    ],
    "baseUrl": ".", …
Run Code Online (Sandbox Code Playgroud)

node.js typescript aws-lambda serverless-framework aws-lambda-layers

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

如何从Firestore Android中的集合中获取文档列表

我的Firestore数据库结构:

|
|=>root_collection
                  |
                  |=>doc1
                         |                  
                         |=>collection
                  |
                  |=>doc2
                         |                  
                         |=>collection
                  |
                  |=>doc3
                         |                  
                         |=>collection
Run Code Online (Sandbox Code Playgroud)

现在我想从中获取文件清单root_collection。将有一个包含以下数据的列表{"doc1", "doc2", "doc3"}。我需要它是因为我想制作一个微调器并将这些数据放入微调器中。然后,用户将选择一些文档并下载。

我尝试使用下面的代码:

firestore.collection("root_collection")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d(TAG,document.getId() + " => " + document.getData());
                        }
                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

但是代码只有在我拥有文档中没有集合的数据结构时才起作用。在其他情况下,中没有任何文档QueryDocumentSnapshot

谢谢!

java android firebase google-cloud-firestore

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

如何检查“随机数”是否已被占用?

我有一个 API 端点,它按严格的顺序创建并发送一些事务。因为我不等待这些交易的结果,所以我为每个交易指定一个随机数,以便以正确的顺序执行它们。

该终端节点是使用 AWS Lambda 函数构建的。因此,如果我有许多并发请求,则 lambda 以并发模式运行。在这种情况下,多个并发实例可以获得相同的随机数(我正在使用eth.getTransactionCount方法来获取最新的事务计数)并使用相同的随机数发送一些事务。因此,我收到错误,因为它没有创建新事务,而是尝试替换现有事务。

基本上,我需要一种方法来检查在交易发送之前是否已经获取了随机数,或者以某种方式保留随机数(是否可能?)。

node.js ethereum web3js

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