首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果mysql中存在节点js,则忽略更新数据。

如果mysql中存在节点js,则忽略更新数据。
EN

Stack Overflow用户
提问于 2017-10-08 07:37:48
回答 1查看 453关注 0票数 0

我将检查我的数据的id,如果在mysql中存在,更新它,如果没有创建它,但是在选择结果中,它不工作,转到esle部分,大多数情况下创建操作,并得到重复的条目错误。最后,我通过无限循环运行这个文件。当我有大量的数据时,我应该告诉你,这个问题会发生。

如果帮助我,我会很高兴的,谢谢:)

这是我的代码:

代码语言:javascript
运行
复制
var 
mysql = require('mysql'),
redis = require('redis'),
infiniteLoop = require('infinite-loop'),
client = redis.createClient(),
lop = new infiniteLoop,
config = require( __dirname + '/app/Config').config,

con = function() {

    return mysql.createConnection({
        host     : config.db_host,
        user     : config.db_user,
        password : config.db_pass,
        database : config.db_name
    });

},

insertDB = function( data ) {

    var connection = con();

    connection.connect( function( err ) {

        connection.query( 'SELECT * FROM real_user WHERE id =' + data.id, function( err, res ) {

            if ( err ) {

                data = JSON.stringify(data);

                client.lpush('aipi', data, function(err,reply) {
                    if ( err ) throw err;
                });

            }

            console.log( "out", data.id, res.length, res );

            if ( typeof res != 'undefined' && res.length > 0  ) {

                console.log( "update", data.id );

                connection.query( 'UPDATE real_user SET ? WHERE id =' + res[0].id, { request_count: data.request_count, updated_at: data.created_at }, 
                    function( err, res ) {
                    if ( err ) throw err;
                });

            } else {

                console.log( "create", data.id );

                connection.query( 'INSERT INTO real_user SET ?', data,  function( err, res ) {
                    if ( err ) throw err;
                });
            }
          connection.end();

        });

    });

},

run = function() {

    var data;

    client.brpop('aipi', 0, function(err, reply) {

        if ( reply[1] ) {

            data = JSON.parse(reply[1]);

            insertDB(data);
        }

    });

};

lop.add(run, []).run();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-08 13:54:27

通过以下方式修正:

重复密钥更新的

代码语言:javascript
运行
复制
connection.connect( function( err ) {

    connection.query( "INSERT INTO real_user SET ? ON DUPLICATE KEY UPDATE updated_at = '" + data.created_at
     + "', request_count = '" + data.request_count + "'", 
        data,  function( err, res ) {
            connection.end();
        });

    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46628616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档