在 Node JS 中使用 MSQL XDEVAPI,我可以将多个调用链接在一起吗?
Using the MSQL XDEVAPI In Node JS, can I chain multiple calls together?
例如,我正在尝试检查 table 中是否存在某个值,如果不存在重复值,则将值写入相同的 table,但它不起作用。让我知道是否可以链接调用,如果不能的话,我是否可以只传递变量然后再调用数据库,而且我在关闭与单个会话的连接时遇到问题,任何帮助将不胜感激。
mysqlx.getSession({
user: 'robot',
password: 'password',
host: 'localhost:8080',
port: '33060'
})
.then (function(session){
var v_table = session.getSchema('nms2019local').getTable('v_table')
for (let k=0; k<s_key.length; k++){
v_table
.select(['s_key', 'accounts'])
.where('s_key like :accounts')
.bind('s_key',s_key[k])
.execute()
.then(function(s_keyDuplicates, session){
let s_keyDuplicatesCheck = s_keyDuplicates.fetchOne()
console.log(s_keyDuplicatesCheck)
if (s_keyDuplicatesCheck === undefined){
for (let n = 0; n<s_key.length; n++){
return v_table
.insert(['s_key'])
.values([s_key[n]])
}
}
// else{
// let s_key_final = [];
// s_keyDuplicatesArray = s_keyDuplicates.toArray()
// for (var m in s_key){
// if(!s_keyDuplicatesArray.includes(s_key[m])) s_key_final.push(s_key[m])
// } console.log(s_key_final)
// for (let l = 0; l<s_key_final.length; l++){
// return v_table
// .insert(['s_key'])
// .values([s_key_final[l]])
// }
// }
})
}
})
.catch(function(err){
console.log('the following error occured: ' + err.message)
})
链接到底是什么意思?快速浏览一下,我会说唯一的问题是您没有使用 insert()
调用 execute()
,因此,这些值永远不会发送到服务器。我不确定异步流程。必须检查一下。
此外,我不确定 s_key
列是否应该包含唯一值,但如果是这种情况,您最好创建一个唯一键约束并使用 SQL “更新插入”策略,如 ON DUPLICATE KEY UPDATE
.
免责声明:我是 MySQL X DevAPI Connector for Node.js
的首席开发人员
例如,我正在尝试检查 table 中是否存在某个值,如果不存在重复值,则将值写入相同的 table,但它不起作用。让我知道是否可以链接调用,如果不能的话,我是否可以只传递变量然后再调用数据库,而且我在关闭与单个会话的连接时遇到问题,任何帮助将不胜感激。
mysqlx.getSession({
user: 'robot',
password: 'password',
host: 'localhost:8080',
port: '33060'
})
.then (function(session){
var v_table = session.getSchema('nms2019local').getTable('v_table')
for (let k=0; k<s_key.length; k++){
v_table
.select(['s_key', 'accounts'])
.where('s_key like :accounts')
.bind('s_key',s_key[k])
.execute()
.then(function(s_keyDuplicates, session){
let s_keyDuplicatesCheck = s_keyDuplicates.fetchOne()
console.log(s_keyDuplicatesCheck)
if (s_keyDuplicatesCheck === undefined){
for (let n = 0; n<s_key.length; n++){
return v_table
.insert(['s_key'])
.values([s_key[n]])
}
}
// else{
// let s_key_final = [];
// s_keyDuplicatesArray = s_keyDuplicates.toArray()
// for (var m in s_key){
// if(!s_keyDuplicatesArray.includes(s_key[m])) s_key_final.push(s_key[m])
// } console.log(s_key_final)
// for (let l = 0; l<s_key_final.length; l++){
// return v_table
// .insert(['s_key'])
// .values([s_key_final[l]])
// }
// }
})
}
})
.catch(function(err){
console.log('the following error occured: ' + err.message)
})
链接到底是什么意思?快速浏览一下,我会说唯一的问题是您没有使用 insert()
调用 execute()
,因此,这些值永远不会发送到服务器。我不确定异步流程。必须检查一下。
此外,我不确定 s_key
列是否应该包含唯一值,但如果是这种情况,您最好创建一个唯一键约束并使用 SQL “更新插入”策略,如 ON DUPLICATE KEY UPDATE
.
免责声明:我是 MySQL X DevAPI Connector for Node.js
的首席开发人员