Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何确保事务一次发生一个_Node.js - Fatal编程技术网

Node.js 如何确保事务一次发生一个

Node.js 如何确保事务一次发生一个,node.js,Node.js,我有一个web服务器,允许用户从服务器获取项目 取回该项目后,它将被删除。并且只有一个用户可能能够获取该项目 我目前正在mysql数据库上运行我的nodejs服务器。这是nodejs已经处理过的事情,还是我必须找出一种方法来确保这些事务一次发生一个。如果这是一个不能自动处理的问题,那么有没有框架可以处理这个问题?您需要手动开始和结束事务 下面是MySQL的示例代码: var mysql = require('mysql'); var connection = mysql.createConne

我有一个web服务器,允许用户从服务器获取项目

取回该项目后,它将被删除。并且只有一个用户可能能够获取该项目


我目前正在mysql数据库上运行我的nodejs服务器。这是nodejs已经处理过的事情,还是我必须找出一种方法来确保这些事务一次发生一个。如果这是一个不能自动处理的问题,那么有没有框架可以处理这个问题?

您需要手动开始和结束事务

下面是MySQL的示例代码:

var mysql = require('mysql');

var connection = mysql.createConnection(
    {
      host     : 'localhost',
      user     : 'YOUR_USERNAME',
      password : 'YOUR_PASSWORD',
      database : 'DB_NAME'
    }
);

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }
  console.log('connected as id ' + connection.threadId);
});

/* Begin transaction */
connection.beginTransaction(function(err) {
  if (err) { throw err; }
  connection.query('INSERT INTO names SET name=?', "sameer", function(err, result) {
    if (err) { 
      connection.rollback(function() {
        throw err;
      });
    }

    var log = result.insertId;

    connection.query('INSERT INTO log SET logid=?', log, function(err, result) {
      if (err) { 
        connection.rollback(function() {
          throw err;
        });
      }  
      connection.commit(function(err) {
        if (err) { 
          connection.rollback(function() {
            throw err;
          });
        }
        console.log('Transaction Complete.');
        connection.end();
      });
    });
  });
});
/* End transaction */

您可能正在使用nodejs寻找锁或互斥,下面是对类似主题的回答:

什么是“一次一个”?web服务器通常处理来自多个用户的事务。如果您向我们展示您的代码,我们可以更具体地帮助您,并且可能会给您提供更多更好的建议,这样我们就可以确切地看到您正在尝试做什么。