- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个基于 promise 的 API。如果我一次发出一个请求,一切都会正常,但是,如果 2 个或更多请求在一秒内到达服务器,我会收到以下错误
Error: Cannot enqueue Quit after invoking quit
奇怪的是,我得到了返回到 API 请求的有效且正确的结果,但是,显然有些问题。
我创建了一个 small project在 GitHub 上。您可以查看一下,我创建了一个包含 2 个用户的 SQL 播种器,因此您只需将查询复制粘贴到您的数据库中(该播种器甚至会创建一个新数据库)
项目很小,只需将数据库凭据放入 configs/mysql.js 文件中,然后运行该文件 node multiple_sends.js
您将看到返回了正确的答案,但 Node 抛出了错误。
我不认为错误出在 mysql 模块中。原因是,如果我从模型中获取代码并创建 CLI 脚本,则不会返回任何错误,mysql 不会发出任何警告
// models/user.js
let mysql = require('mysql');
let configs = {
host : '127.0.0.1',
user : 'root',
password : 'something',
database : 'demo'
}
/**
* This constructor function is responsible for running queries against
* the mysql database
*/
function Users()
{
// These are PRIVATE variables, they can only be accessed within this class
let mysql_connection = null;
this.getUserByEmail = function(email)
{
let parent = this;
mysql_connection = mysql.createConnection(configs);
return this.mysqlConnect()
.then((connectionId) =>
{
console.log(`getUserByEmail: connection id: ${connectionId}`);
let sql = 'SELECT user_id, first_name, last_name, upassword, email, '
+ 'birthday, roles FROM users WHERE email = ?';
return parent.runQuery(sql, [email]);
})
.then((results) =>
{
if (results.resultSet.length === 0) {
return null;
}
let resultSet = results.resultSet[0];
// return our result to the calling method.
return (resultSet);
})
.catch(error => {
throw error;
})
}
/**
* Run this method when trying to connect to the database
* @param Object error
* @return Promise
*/
this.mysqlConnect = function()
{
return new Promise(function(resolve, reject)
{
mysql_connection.connect(function(error)
{
if (error) {
console.log('Error making connection', error);
throw "Failed connection to database";
}
// we don't have to return anything, this is just to show that Promises
// can return
resolve(mysql_connection.threadId);
});
});
}
/**
* use this method for running selects
* @param string query - well formed query
* @return Promise
*/
this.runQuery = function(query, params)
{
return new Promise(function(resolve, reject)
{
mysql_connection.query(query, params, function(error, results, fields)
{
mysql_connection.end((err) => {
if (err) {
console.log('error terminating connection: ', mysql_connection.threadId);
console.log('error ', err);
}
});
if (error) {
reject(error);
}
resolve({resultSet: results, fieldSet: fields});
});
});
}
}
module.exports = Users;
这是调用模型的脚本
//main.js
let Users = require ('./models/user');
function getUser1Info()
{
user1.getUserByEmail('original.logger@example.com')
.then(userData1 => {
let ctime = new Date();
console.log(ctime.getTime(), 'user data: ', userData1.user_id)
})
.catch((error) => {
console.log('error!', error);
});
}
function getUser2Info()
{
user2.getUserByEmail('billy.b.parker@example.com')
.then(userData2 => {
let ctime = new Date();
console.log(ctime.getTime(), 'user data: ', userData2.user_id)
})
.catch((error) => {
console.log('error!', error);
});
}
let user1 = new Users();
let user2 = new Users();
setTimeout(() => {
getUser1Info();
}, 1000);
setTimeout(() => {
getUser2Info();
}, 999);
此代码未从我的 API 中的 models/user.js 中修改。这让我相信我在 Express 中创建模型的方式从根本上被破坏了。
感谢任何帮助
最佳答案
If you using the node-mysql module, just remove the .connect and .end. Just solved the problem myself. Apparently they pushed in unnecessary code in their last iteration that is also bugged. You don't need to connect if you have already ran the createConnection call
Cannot enqueue Handshake after invoking quit
我还会做什么:使用 Knex 而不是普通的 mysql
关于mysql - Node MySQL 错误 - 错误 : Cannot enqueue Quit after invoking quit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48333749/
我正在从不同来源获取新闻提要并添加到数据库,但我遇到异常 Error: Cannot enqueue Handshake after already enqueuing a Handshake. at
嘿,大家好,我只是想制作一个简单的表单,将数据发送到 mySQL 数据库。我的问题是提交后我无法再提交另一份。它只允许我提交表单一次,然后在第二次提交后,我收到此错误“错误:在已经排队握手后无法排队握
我每 5 秒查询一个表并向用户显示。我使用的是mysql 8。应用程序是nodejs。 var con = mysql.createConnection({ host: "localhost",
我正在尝试创建两个函数,一个从 SQL 数据库检索对象,另一个将对象保存到同一个 SQL 数据库。我使用 node.js 和 mysql 来执行此操作。我有两个函数,fetchEmployee 和 E
我需要一个具有固定容量但始终允许线程将项目添加到开头的 Java 列表。如果它已满,它应该从末尾删除一个项目以腾出空间。没有其他进程会删除项目,但其他进程会希望迭代这些项目。 JDK 中有什么东西可以
我在 tensorflow 中构建了一个卷积神经网络。它经过培训,现在我正在打开它并进行评估。 import main import Process import Input eval_dir = "
如果last会变成x,为什么last.next会被分配给x?我不明白将 x 分配给 last.next 有何影响。这是队列的完整上下文:http://introcs.cs.princeton.edu/
我在创建具有双因素身份验证的应用程序时遇到了一些麻烦。我决定使用 twilio 作为我的短信网关,并决定遵循他们的教程。然而,尽管已经导入了我需要的内容,但我遇到了无法解决排队问题。 import a
注册样式表然后将其入队与直接入队有何不同? 我在这里注册然后排队。 function calling_script(){ wp_register_style('bootstrap',
假设我有一个模块,其中有一个队列。 对于其他实体入队,它们必须通过一个函数: public sub InsertIntoQueue(Obj) MyQueue.Enqueue(Obj) end
我有一个包含 6 个库的列表,我想加载到我的 WordPress 插件/主题中。目前它们都像这样添加到主题的标题中。 我正在构建一个插件,它有自己的脚本,依赖于这些库。我想运行我提出的这个解决方案,
只需要一些关于 WP en 队列的信息,我已经在各个网站上学习了一些教程,因为我是一个非常基础的网页设计师,我主要使用 HTML CSS 至少这是我最了解的。 我无法最好地解释我哪里出了问题,但我可以
有没有办法在一定时间后重定向队列中的调用? 我在 Twiml 中知道 您可以设置超时。 有没有办法在 中做到这一点?甚至 作为它的一部分 waitURL 现在我正在做这样的事情:
目前正在准备考试,无法弄清楚示例代码中 queue[rear*] = new_node 背后的原因。 你不是把 new_node 的地址而不是值放进去吗? 还有,这个队列是不是Node**队列,因为它
我是编程新手。尝试编写一个函数来接收列表的头部 + 要插入的数据 - 并传回列表的新头部。我已经通过将元素添加到列表的头部来完成很多工作,但出于某种原因,我无法理解这个细微的差别。 #include
我是队列实现的新手,需要一些帮助来练习。 假设我正在使用 enqueue 对 4 个人进行排队,并且我想向输出添加一个函数,以显示 1 到 10 之间的随机数“x”4 次,并符合以下条件: 如果“x”
首先,我将解释一个简短的场景; 当来自某些设备的信号触发时,一个类型为 Alarm 的对象被添加到队列中。每隔一段时间检查队列,并针对队列中的每个警报触发一个方法。 但是,我遇到的问题是,如果在遍历队
有人可以解释一下主要区别吗?我对任何语言的编程中的这些功能都没有清楚的了解。 最佳答案 C 和 C++ 等编程语言中的一些基本数据结构是堆栈和队列。 堆栈数据结构遵循“先进后出”策略 (FILO),其
private Queue _queueObject = new Queue(); private static Queue _queueItem = new Queue(); private sta
我在CircularArrayQueue类中遇到了enqueue()方法: public void enqueue (T element) { if (size() == queue.length){
我是一名优秀的程序员,十分优秀!