关系数据库的无状态编程

Stateless Programming with Relational Database

本文关键字:编程 状态 关系数据库      更新时间:2023-09-26

我尽量编码为无状态。然而,当涉及到与关系数据库的交互时,我被卡住了。

var fetchDataFromTable = function(tableName) 
{  
 //dummy result from using mysql library
 sqlQuery = "Select * from " + tableName;
 return new Promise(function(resolve, reject) 
 {
   con.query(sqlQuery, function(err,body)
    {
   resolve(body)
    })
 })
}
var getOrderName = function(checkOrderID,fetchDataFromTable)
{
   //Here, I have to hard-code the table name.
   fetchFromTable("OrderTable").then(function(result)
    {
      //dummy function. Can use SQL query instead of looping.
       result.forEach(function(index){
         if (result[index].orderID == checkOrderID)
            return result[index].orderName;
       })
    })
}
orderName = getOrderName("A123",fetchDataFromTable);

上面的示例代码显示了依赖数据库的结果来做出某些决策的示例。在本例中,我使用的是". orderid "。

我的问题是,这被认为是无状态的吗?如果不是,我怎样才能使它更"无国籍"?

这取决于你对无状态的定义。

根据定义,数据库是有状态的(它的全部意义是存储东西),所以从技术上讲,你所做的不是无状态的。

然而,当人们提到无状态web应用时,他们通常是指"无会话状态",而不是完全无状态。

您的代码示例似乎没有使用任何会话状态,因此可以将其称为无状态解决方案。