Articles of mysql

node-mysql其中connection.end()去

我真的很困惑在node-mysql中使用connection.end()。 我不完全明白它在哪里,目前我把它放在查询后,但如果我创build一个新的查询,我得到一个错误Cannot enqueue Query after invoking quit. 现在我的应用程序有一堆检查在这里是其中之一: socket.on('connect', function(data,callBack){ var session = sanitize(data['session']).escape(); var query = connection.query('SELECT uid FROM sessions WHERE id = ?', [session], function(err,results){ if(err){ console.log('Oh No! '+err); }else{ io.sockets.socket(socket.id).emit('connectConfirm',{data : true}); } connection.end(); }); }); 现在之后,如果我有任何其他查询我得到错误发生。 我在我的jsFiddle中做了一个更明智的解释: http : //jsfiddle.net/K2FBk/更好地解释我得到的问题。 node-mysql的文档并不完全解释把connection.end() 应该去哪里避免这个错误?

永久会话存储在节点中

我有一个节点服务器现在运行,我npm forever使用npm forever保持运行,当我不开发,我用npm nodemon当我编辑(重新启动应用程序编辑/上传)。 我注意到,每当我重新启动我的应用程序,会话数据丢失,我的球员不得不重新login到他们的帐户。 这不是一个huuuge交易,但我想知道是否有一种方式来编辑我的server.js页面,而无需重新启动应用程序,并logging每个人? (请注意,这仅适用于server.js或模块编辑, .html和.js页面不需要重新启动) (第二个注意:我正在使用mysql,nodejs,angularjs,express.io所有这些,以防万一有人问)

Sails.js:生产env + sails-mysql – 数据库表不是在升降机上创build的

在生产模式下,当提升一个Sails应用程序时,数据库表不会在提升时创build,而在dev模式下则是。 现在,在部署时,我首先以开发模式运行,这样就可以创build表,然后以prod模式运行。 有没有解决的办法?

没有选项可以在后续模型中映射列名称

我有一个给定的数据库,长的,繁琐的列名。 没有办法将表名映射到模型中的更简短和更具描述性的propertyNames? 就像是 var Employee = sql.define('Employee', { id : {type : Sequelize.INTEGER , primaryKey: true, map : "veryLongNameForJustTheId"} },{ tableName: 'cumbersomeTableName', timestamps: false });;

如何在MySql中使用sequelize运行多个原始查询?

我想通过sequelize.sync({ force: true });运行一个脚本来从数据库中删除所有的表sequelize.sync({ force: true }); 当我从控制台运行脚本时,脚本运行时没有问题,当我尝试从我的node.js应用程序运行时,问题就发生了; MySql返回一个分析错误。 的node.js var dropAllTables = [ 'SET FOREIGN_KEY_CHECKS = 0;', 'SET GROUP_CONCAT_MAX_LEN = 32768;', 'SET @tables = NULL;', "SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE());", "SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);", "SELECT IFNULL(@tables, 'SELECT 1') INTO @tables;", 'PREPARE […]

如何在SEQUELIZE(nodeJS)中创build一个TRIGGER?

我试图创build一个触发器使用sequelize ..主要想法是创build一个用户后创build一个实例的CONFIG。 //USER MODEL module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { name : DataTypes.STRING(255), email : DataTypes.STRING(255), username : DataTypes.STRING(45), password : DataTypes.STRING(100), }, { classMethods : { associate : function(models) { User.hasOne(models.Config) } } }); return User; }; //CONFIG MODEL module.exports = function(sequelize, DataTypes) { var Config = sequelize.define('Config', { notifications […]

nodejs上有支持存储过程的mysql驱动吗?

我正在寻找支持存储过程的nodejs的mySQL驱动程序。 http://nodejsdb.org/db-mysql/ ,我一直在使用给出的错误 PROCEDURE不能返回给定上下文中的结果集

使用node-mysql编写MySQL Node.js模型

我试图find一些使用node-mysql编写MySQL模型的好习惯。 以下是我到目前为止: var client = app.settings.client; // Client is set in Express settings var table = 'users'; var User = function() { } // Create the user with data from Facebook User.prototype.createFromFacebook = function (name, first_name, last_name, email, location, gender, facebookId, facebookToken, callback) { client.query( 'INSERT INTO ' + table + ' SET name = […]

优化mysql查询以获取每个用户的“不可见”条目

这个称号是相当迷人的,但我不能拿出更清楚的东西。 长话短说,我们正在创build一个连接到与mySql数据库通信的node.js服务器的移动应用程序。 很常见的设置。 现在,我们有多个用户可以上传“时刻”到我们的服务器。 所有其他用户只能看到这些时刻。 只要用户x看到另一个用户的时刻,x就永远不会看到这个时刻。 也许有点像Snapchat,除了单一用户而不是单一用户。 矩也按照当前用户的位置按距离sorting。 现在,我正在寻找一种仅从数据库中提取“看不见”时刻的智能方式。 现在,我们使用Users和Moments之间的关系表。 假设一个用户(ID = 20)看到了一个时刻(ID = 30320),那么我们插入到这个表格20和30320中。我知道。 这难以扩展,可能是一个可怕的想法。 我想可能是检查最后一次看到的date,只取得过去这个日子的时刻,但是再一次,在按datesorting之前,时刻是按距离sorting的,所以有可能看到一个3分钟的时刻,然后是那个时刻是30秒老。 有没有更聪明的做法,或者我注定要使用Moments和Users之间的关系表,并在查询时join到它? 非常感谢。 编辑 – 这个逻辑总共使用3个表格。 用户 时刻 MomentSeen MomentSeen只包含用户已经看到什么时刻,什么时候。 由于时间不是按datesorting的,我无法获取上次看到的时刻之后上传的所有时刻。 编辑 – 我刚刚意识到移动应用程序Tinder必须使用类似的逻辑,用户“喜欢”哪个用户。 既然你不能回头再看到一个用户两次,他们可能会使用一个非常相似的查询,我正在寻找。 考虑到他们有很多的用户,而且他们是按照距离和其他一些未知的标准sorting的,那么与“UserSawUser”关系表相比,必须有更聪明的做事方式。 编辑 我不能提供整个数据库结构,所以我只是留下重要的表格和他们的一些领域。 Users { UserID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY } Moments { MomentID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, UploaderID INT UNSIGNED, /* […]

用于检查数据库更新的Socket.io

我有一个连接到mysql数据库的node.js服务器,并使用socket.io打开一个新的套接字。 该服务器的angular色基本上是在数据库表中有该用户的新消息时通知连接到该服务器的任何客户端(用户)。 下面的代码仅在客户端明确发出“check_messages”请求时才起作用。 我怎样才能改变它,使客户端是一个通知,而不是一个新的消息插入到该用户的MySQL表中,而不是客户端不得不明确发出'check_messages'请求? var app = require('http').createServer().listen(8124); var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'some username', password : 'some password', database: 'some database' }); connection.connect(); console.log('Server running at http://127.0.0.1:8124/'); var io = require('socket.io').listen(app); var prev_id = 0; io.sockets.on('connection', function (socket) { socket.emit('greeting', 'Hello'); socket.on('check_messages',function(data){ var uid = data['uid']; […]