我希望在我的服务器 - 客户端应用程序的specefic ordner中进行多次MySQL插入。
var con = createDatabaseConnection();
function createDatabaseConnection() {
return (mysql.createConnection({
host: // hostIp,
user: // user,
password: //pw,
database: //databasename
});
}
function writeFoo(fooObject) {
var sql = // prepare sql insert for fooObject;
con.query(sql, function (err) {
// ? Is inserted data ready to use ?
}
});
function writeBar(barObject) {
var sql = // prepare sql insert for barObject;
con.query(sql, function (err) {
// ? Is inserted data ready to use ?
});
});
// Both arrays containing an unpredictable amount of objects
var fooArray = [];
var barArray = [];
关键的一点是,我必须绝对确定fooObject
插入fooArray
之前插入barArray
中的writeBar()
。因为writeFoo()
中使用的SQL INSERT语句包含SELECT语句,该语句必须找到`2017/06/22 16:00:22 [error] 23179#23179: *120 FastCGI sent in stderr: "PHP
message: PHP Fatal error: Interface 'RaphaelScheinkoenig\WebLib\View' not
found in /var/www/site/app/view/DashboardView.php on line 10" while reading
response header from upstream, client: 88.xx.xxx.xxx, server:
xxxxxx.xxxxxx.xxxxx, request: "GET /dashboard HTTP/1.1", upstream:
"fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "xxxxxx.xxxxxx.xxxxx"`
中插入的数据。
在任何时候都可能发生事件(客户端发送需要插入的数据),这也需要此功能。
真实情况有点复杂,但我认为这是目前的主要问题。
答案 0 :(得分:1)
你可以用inode number链接它们,这样你就可以确保每个电话都是有序的,例如:
var con;
function createDatabaseConnection() {
return new Promise(function (resolve, reject) {
mysql.createConnection({
host: hostIp,
user: user,
password: pw,
database: databasename
}, function(err, res){
if(err) reject(err);
else resolve(res);
});
});
}
function writeFoo(fooObject) {
let sql = fooObject;
return new Promise(function (resolve, reject) {
con.query(sql, function (err, res) {
if(err) reject(err);
else resolve(res);
});
});
}
function writeBar(barObject) {
let sql = barObject;
return new Promise(function (resolve, reject) {
con.query(sql, function (err, res) {
if(err) reject(err);
else resolve(res);
});
});
}
createDatabaseConnection()
.catch(function (error) {
// connection failed
// log info
console.error(error);
process.exit(0);
})
.then(function (res) {
con = res;
return writeFoo(fooObject);
})
.catch(function (error) {
// writeFoo(fooObject) failed
// log info
console.error(error);
process.exit(0);
})
.then(function () {
return writeBar(barObject);
})
.catch(function (error) {
// writeBar(barObject) failed
// log info
console.error(error);
process.exit(0);
});
答案 1 :(得分:0)
不会说ORM总是最好的,但http://docs.sequelizejs.com/适用于节点。那里有一个批量插入选项。