8.1.1处理警告

与单个语句的执行类似,事务的提交或回滚也会触发警告。的应答结果对象处理这些警告Session.commit ();Session.rollback ();需要检查一下。

这在下面的示例中显示。该示例假设测试模式存在,并且集合my_collection不存在。

Var mysqlx = require('mysqlx');//连接到服务器var mySession = mysqlx。getSession({主机:'localhost',端口:33060,用户:'用户',密码:'密码'});//获取模式测试var myDb = myssession . getschema ('test');//创建一个新的集合var myColl = myDb.createCollection('my_collection');//启动一个事务myssession . starttransaction ();{myColl试试。添加({“名称”:“罗希特”,“年龄”:18岁的“高度”:1.76}). execute ();myColl。添加({“名称”:“岬”,“年龄”:24日,“身高”:1.65}). execute ();myColl。添加({“名称”:“莱昂”,“年龄”:39岁的“高度”:1.9}). execute (); // Commit the transaction if everything went well var reply = mySession.commit(); // handle warnings if (reply.warningCount){ var warnings = reply.getWarnings(); for (index in warnings){ var warning = warnings[index]; print ('Type ['+ warning.level + '] (Code ' + warning.code + '): ' + warning.message + '\n'); } } print ('Data inserted successfully.'); } catch(err) { // Rollback the transaction in case of an error reply = mySession.rollback(); // handle warnings if (reply.warningCount){ var warnings = reply.getWarnings(); for (index in warnings){ var warning = warnings[index]; print ('Type ['+ warning.level + '] (Code ' + warning.code + '): ' + warning.message + '\n'); } } // Printing the error message print ('Data could not be inserted: ' + err.message); }

默认情况下,所有警告都是从服务器发送到客户机的。如果已知某个操作会生成许多警告,而这些警告对应用程序没有价值,则可以抑制发送警告。这有助于节省带宽。session.setFetchWarnings ()控制警告是在服务器上丢弃还是发送到客户端。session.getFetchWarnings ()用于学习当前活动的设置。

Var mysqlx = require('mysqlx');函数process_warnings(result){if (result. getwarningcount ()){var warnings = result. getwarnings ();For (index in warnings){var warning = warnings[index];print('键入['+警告。level + '](代码' +警告。代码+ '):' +警告。消息+ ' \ n ');}} else{print("没有返回警告。\n");}} //连接到服务器var mySession = mysqlx。getSession({主机:'localhost',端口:33060,用户:'用户',密码:'密码'});//禁用警告生成myssession . setfetchwarnings (false);var result = mySession。Sql('如果存在不存在就删除模式').execute();process_warnings(结果);//启用警告生成myssession . setfetchwarnings (true);var result = mySession。Sql('如果存在不存在就删除模式').execute();process_warnings(结果);