我有一个任务来获取有关数据库中用户的关键信息。有很多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) 我正在团队中从事一个反应项目。我们正在使用一些第三方服务,这些服务需要 API 密钥。现在我们将这些密钥存储在代码中。据我所知,这不好而且危险。
我试图找到一些这方面的建议。我现在看到的解决这个问题的所有方法是:
.env文件并将所有密钥存储在那里(但在这种情况下,我需要与团队的其他成员共享我的密钥)您在团队中使用哪种方式?为什么?我想了解对我来说最好的解决方案是什么。谢谢!
我面临着一个神秘的错误。当我尝试向服务器发送一个特定查询时,我收到以下错误
\n\nDOMException: 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)\nRun Code Online (Sandbox Code Playgroud)\n\n在这里我记录了实际的 url 字符串
\n\nhttp://localhost:3000\xe2\x80\x8b/users\xe2\x80\x8b/5\xe2\x80\x8b/payments\xe2\x80\x8b/disconnect\nRun Code Online (Sandbox Code Playgroud)\n\n如果我发送相同的查询,但从我的托管到开发服务器,我会看到错误 404 和像这样的 url
\n\nhttps://example.com/users%E2%80%8B/5%E2%80%8B/payments%E2%80%8B/disconnect\nRun 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}\nRun Code Online (Sandbox Code Playgroud)\n\n有趣的是,所有其他端点都工作正常。Chrome 和 Firefox 上的行为相同。
\n\n什么会导致这样的问题?
\n我的无服务器应用程序中有多个功能。其中两个用于 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
我的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。
谢谢!
我有一个 API 端点,它按严格的顺序创建并发送一些事务。因为我不等待这些交易的结果,所以我为每个交易指定一个随机数,以便以正确的顺序执行它们。
该终端节点是使用 AWS Lambda 函数构建的。因此,如果我有许多并发请求,则 lambda 以并发模式运行。在这种情况下,多个并发实例可以获得相同的随机数(我正在使用eth.getTransactionCount方法来获取最新的事务计数)并使用相同的随机数发送一些事务。因此,我收到错误,因为它没有创建新事务,而是尝试替换现有事务。
基本上,我需要一种方法来检查在交易发送之前是否已经获取了随机数,或者以某种方式保留随机数(是否可能?)。
node.js ×3
nestjs ×2
reactjs ×2
android ×1
aws-lambda ×1
axios ×1
ethereum ×1
firebase ×1
frontend ×1
google-maps ×1
java ×1
postgresql ×1
rest ×1
typeorm ×1
typescript ×1
web3js ×1