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

Posted

技术标签:

【中文标题】在 Node JS 中使用 MSQL XDEVAPI,我可以将多个调用链接在一起吗?【英文标题】:Using the MSQL XDEVAPI In Node JS, can I chain multiple calls together? 【发布时间】:2020-12-24 18:56:36 【问题描述】:

例如,我正在尝试检查表中是否存在值,然后如果不存在重复值,则将值写入同一个表中,但它不起作用。让我知道是否可以链接调用,如果不是,我是否只需传递变量然后再次调用数据库,我也无法关闭与单个会话的连接,任何帮助将不胜感激。

  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)

)

【问题讨论】:

【参考方案1】:

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

另外,我不确定s_key 列是否应该包含唯一值,但如果是这种情况,您最好创建一个唯一键约束并使用像@987654321 这样的SQL“upsert”策略@。

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

【讨论】:

谢谢,是的,它们是独特的价值。答案很简单,只需添加执行即可。

以上是关于在 Node JS 中使用 MSQL XDEVAPI,我可以将多个调用链接在一起吗?的主要内容,如果未能解决你的问题,请参考以下文章

msql数据迁移

msql_createdb: 建立一个新的 mSQL 数据库。

msql 数据类型

Msql入门实战之下

msql sql_model 详解(laravel5.6为例)

msql sql_model 详解(laravel5.6为例)