使用 MSQL XDEVAPI 在 Node JS 中,我可以将多个调用链接在一起吗?

问题描述

例如,我试图检查表中是否存在一个值,然后如果不存在重复项,则将这些值写入同一个表中,但它不起作用。如果不能,请告诉我是否可以链接调用,我是否只传递变量,然后再调用一次数据库,我在关闭与单个会话的连接时也遇到问题,任何帮助将不胜感激。

  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)

})

解决方法

链接到底是什么意思?快速浏览一下,我会说唯一的问题是您没有使用 execute() 调用 insert(),因此,这些值永远不会发送到服务器。不过,我不确定异步流程。必须检查。

另外,我不确定 s_key 列是否应该包含唯一值,但如果是这种情况,您最好创建一个唯一键约束并使用 SQL“upsert”策略,例如ON DUPLICATE KEY UPDATE

免责声明:我是 Node.js 的 MySQL X DevAPI 连接器的首席开发人员