Node.js和node-mysql DB查询-需要同步代码帮助

|| 我正在编写一些非Web应用程序帮助程序,并且遇到了对同步查询调用的需求。 基本上,在循环中,我需要检查数据库以查看该值是否存在。如果没有,则插入值。当前,使用node-mysql我只能使它与回调一起使用。因此,node.js将调用视为异步调用,并在查询完成之前继续处理我的请求。这是一个大问题,因为最后可能会因为队列中的重复项而插入重复项。 理想的解决方案-不起作用。结果实际上是客户的对象,我无法在其中找到实际结果。但是,这确实使其同步。
results = client.query(\'SELECT COUNT(md5) as md5Count FROM table WHERE md5 = \"\' + md5 + \'\"\')
以下无效。 Node.js将其视为异步,而externalResult仍然是客户端的对象。
outerResult = client.query(\'SELECT COUNT(md5) as md5Count FROM board WHERE md5 = \"\' + md5 + \'\"\',  function  selectCb(err, results, fields) {console.log(results);});
任何帮助表示赞赏。     
已邀请:
  基本上,在循环中,我需要检查数据库以查看该值是否存在。如果没有,则插入值。 这是使用SQL最好解决的问题。您不能通过反复与数据库通信来解决此问题,而可以通过仅在不存在索引值的地方插入SQL来解决此问题。
INSERT INTO mytable ( name, address ) 
SELECT @name, @address FROM DUAL 
WHERE NOT EXISTS (SELECT * FROM mytable WHERE name = @name, address = @address)
这是一个超级简化的示例,而不是最优化的示例。如果需要,您可以在此处使用数据集来执行相同的操作,而不是逐条记录。     
  基本上,在一个循环中,我需要   检查数据库以查看该值   存在。如果没有,请插入   值。当前,使用node-mysql I   只能让它与   打回来。因此,node.js   将呼叫视为异步,   一直在处理我的请求之前   查询完成。这是一个大问题   因为最后可能是   插入重复项,因为它们是   在队列中。 有一个异步的解决方案,总是存在。 基本上,您担心会输入重复的条目。 我想您要遍历一系列数据。您的问题已由
_.uniq
或其他一些过滤器解决了。 所以你只要叫
_.uniq(md5s).forEach(function() { })
    

要回复问题请先登录注册