我想看看发送到PostgreSQL服务器的SQL命令,因为我需要检查它们是否正确.特别是,我对表创建命令感兴趣.
例如,ActiveRecord(Ruby)将其SQL语句打印到标准输出.这可能与Node.js/ActionHero.js和Sequelize.js一样吗?
sequelize.sync()上的force选项有什么作用?
sequelize.sync({
force: true
});
Run Code Online (Sandbox Code Playgroud)
具体来说,我有兴趣知道什么力:假吗?它不会将模式与数据库同步吗?
是否有任何正式的续集文档?我只能在文档中找到示例.
我有一个非常奇怪的问题,等待一个已经通过resolve事件 - 发射器回调的Promise 只是退出进程而没有错误.
const {EventEmitter} = require('events');
async function main() {
console.log("entry");
let ev = new EventEmitter();
let task = new Promise(resolve=>{
ev.once("next", function(){resolve()}); console.log("added listener");
});
await task;
console.log("exit");
}
main()
.then(()=>console.log("exit"))
.catch(console.log);
process.on("uncaughtException", (e)=>console.log(e));
Run Code Online (Sandbox Code Playgroud)
我期待这个过程在我运行时暂停,因为显然"next"当前从未发出过.但我得到的输出是:
条目
添加了听众
然后nodejs进程正常终止.
我认为这是什么做的垃圾收集器,但ev并task显然还是在范围main.所以我真的不知道为什么这个过程完全没有错误地退出.
很显然,我会最终发出的事件,但我已经简化我的代码上面的重现.我在node v8.7.0.我的代码有问题还是这个节点错误?
我已经使用 Fastify 用 Node、PostgreSQL、Sequelize 编写了我的服务器应用程序。
现在我想使用 TypeScript。谁能告诉我如何开始使用 TypeScript 重写我的服务器应用程序。
我使用es6 async await语法有这个非常令人困惑的代码片段.我期望发生的是该进程await永远挂起,因为从不调用resolve函数.然而,实际发生的是输出"start"然后进程退出而没有更多的输出.
const simple = async () => {
console.log('start')
await new Promise(resolve => {})
console.log('done.')
}
simple()
Run Code Online (Sandbox Code Playgroud)
但是,下面的代码将打印"开始",等待1秒,然后打印"完成".
const simple = async () => {
console.log('start')
await new Promise(resolve => setTimeout(resolve, 1000))
console.log('done.')
}
simple()
Run Code Online (Sandbox Code Playgroud)
我对这意味着什么(没有任何证据)的最接近的猜测是,当节点在等待承诺时,它会跟踪代码中发生的活动事件,当没有其他事情发生时,它就会退出.有人可以解释为什么代码退出这里?
赛跑 node v8.7.0
在我的公司,我们的应用程序在 NodeJS 上运行,并通过多个 EC2 实例和一个 RDS 数据库运行。
我们的应用程序需要一些升级,因为一些依赖项已经很旧了,我们所做的引起我们注意的升级之一是更新我们的数据库库:mysql(从 2.16.0 到 2.17.0)、knex(从 0.12.2 到 0.19 .1) 和书架(0.10.2 至 0.15.1)。
检查更改日志后,不需要更改代码,因此我们很快设法将其上传到我们的临时服务器。
突然,我们的应用程序变得太慢了。加载所有数据需要几秒钟,而我们的主要用户的仪表板在几毫秒内加载到同一台服务器上,需要大约 30 秒。几分钟后,整个应用程序完全没有响应。
为了检查问题是否仅与依赖项升级有关,我们设法将这些降级到工作版本,并且应用程序恢复到正常速度。又升级了,又慢了。
我们已经开始通过 New Relic 分析 RDS 方面是否有问题。什么都没有。没有高峰,没有高 CPU 使用率,没有慢查询或其他任何事情。然后我们来检查连接池,发现适合我们的knex版本使用“generic-pool”,而新版本使用“tarn”。
所以我们开始调试池,发现它被一个指定的查询填满,完全冻结了一段时间,然后开始抛出“TimeoutError: Knex: 获取连接超时。池可能已满”错误。
但是关于填充所有池并冻结的查询最有趣的是它根本不应该生成(并且在使用不存在此问题的过时版本时不会生成)。
在我们的应用程序中,我们只在两种情况下对联系人表执行 SELECT 请求:
首先,很明显,当用户想要列出他们的联系人时:
let contacts = await Contacts.forge({ 'list_owner': udata.id }).fetchAll()
Run Code Online (Sandbox Code Playgroud)
其次,在检查联系人匹配以判断某些信息是否应该对指定用户可见时,取决于信息所有者的隐私设置:
let checkContact = await Contacts.where({
list_owner: target_user,
contact: udata.id
}).fetch()
Run Code Online (Sandbox Code Playgroud)
经过几次 grepping,我可以保证我们的代码库中没有其他地方可以从联系人表中进行 SELECTS。在我们的调试中,我们没有发现未定义的值,并且我们的调查显示查询在之前的代码运行时运行。但是正如您在屏幕截图中看到的,查询 knex 运行没有条件:
select `contacts`.* from `contacts`
Run Code Online (Sandbox Code Playgroud)
我们相信这就是它填满池的原因(因为请求每个用户的联系人是一项相当大的工作),但与此同时,我们看不出为什么 knex 运行这样的查询,如:
我在构建Jenkins时遇到错误
詹金斯·洛格(Jenkins Log)
任务:api:processResources任务:api:classes任务:web:nodeSetup任务:web:npmSetup /var/lib/jenkins/workspace/hds_v2_docker/web/.gradle/npm/npm-v6.11.2/bin/npm-> / var / lib / jenkins / workspace / hds_v2_docker / web / .gradle / npm / npm-v6.11.2 / lib / node_modules / npm / bin / npm-cli.js / var / lib / jenkins / workspace / hds_v2_docker / web /。 gradle / npm / npm-v6.11.2 / bin / npx-> /var/lib/jenkins/workspace/hds_v2_docker/web/.gradle/npm/npm-v6.11.2/lib/node_modules/npm/bin/npx-cli .js + npm@6.11.2在6.837s中添加了832个贡献者的430个软件包任务:web:npmInstall FAILED npm ERR!无法读取未定义的属性“匹配”
npm ERR!可以在以下位置找到该运行的完整日志:npm ERR!
/var/lib/jenkins/.npm/_logs/2019-10-16T01_11_20_594Z-debug.log失败:构建失败,发生异常。
出了什么问题:任务':web:npmInstall'的执行失败。
进程'命令'/var/lib/jenkins/workspace/hds_v2_docker/web/.gradle/npm/npm-v6.11.2/bin/npm''完成,返回值非零
尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获取完整的见解。
在https://help.gradle.org上获得更多帮助
此构建中使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。使用“ --warning-mode all”来显示各个弃用警告。参见 https://docs.gradle.org/5.0/userguide/command_line_interface.html#sec:command_line_warnings
在33秒内失败
/var/lib/jenkins/.npm/_logs/2019-10-16T01_11_20_594Z-debug.log …
node.js ×6
sequelize.js ×3
javascript ×2
promise ×2
amazon-rds ×1
bookshelf.js ×1
fastify ×1
knex.js ×1
mysql ×1
npm ×1
postgresql ×1
typescript ×1