我有一个允许用户从服务器获取项目的Web服务器。
获取该项后,将删除该项。并且只有一个用户可能能够获取该项目。
我目前在mysql数据库上运行我的nodejs服务器。这是nodejs已经处理过的事情,还是我必须找到一种方法来确保这些事务一次发生一次。如果这是不能自动处理的事情,那么是否有任何框架可以解决这个问题?
答案 0 :(得分:1)
您需要手动开始和结束交易。
以下是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 */
答案 1 :(得分:0)
您可能正在寻找带有nodejs的锁或互斥锁,以下是类似主题的答案:How to lock (Mutex) in NodeJS?