关系数据库的无状态编程

时间:2016-10-16 10:03:40

标签: javascript stateless

我尝试尽可能无代码编码。但是,当涉及到与关系数据库的交互时,我陷入了困境。

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”。

我的问题是,这是否被视为无国籍?如果没有,我怎么能让它更“无国籍”?

1 个答案:

答案 0 :(得分:0)

取决于无国籍人的意思。

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

然而,当人们提到无状态网络应用时,他们通常意味着“没有会话状态”,而不是完全没有国家。

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