【问题标题】:Rendering DB values using Javascript使用 Javascript 渲染数据库值
【发布时间】:2016-11-09 17:56:03
【问题描述】:

到目前为止,在我的一个项目中,已经直接实现了 DB 规范化和“状态代码”的存储方式,例如

病人表

patientId | referralStatus

  1001            1
  1002            2

Referral_status_codes_master

refStatusCode | refValue
      1         Pending
      2         Awaiting

连接这两个表可以为 "STATUS_CODES" 提供适当的数据。 我的意图是,如果我使用 Javascript 为相对较小的主表值实现这一点是否合适,即根本不改变,例如这里的状态。

假设我将患者数据按原样加载到 HTML 表中,并通过使用 javascript 更改它们的含义。

<tr>
  <td>1001</td>
  <td>1</td>
</tr>

目标:在sql查询中不使用join,在客户端使用Javascript获得相同的结果。

我将该 HTML 表绑定到一个 JS 函数并将状态 1 更改为“待处理”,我知道这是可能的,我的问题是:

  1. 这样做有什么坏处。
  2. 是否存在仅用于此目的的库。

请提供您的建议。

谢谢

【问题讨论】:

  • 不太清楚你建议什么......哪个数据库?服务器?
  • 嗯,我使用的是 Mysql DB,但这个问题对所有 DB 都是通用的,已经编辑了这个问题。

标签: javascript jquery database database-design normalization


【解决方案1】:

由于您的状态数量有限,您可以将值映射到用户友好的名称,而不仅仅是使用 js/jQuery 替换它们

var statusMap = {
  '1': 'Normal',
  '2': 'Missing',
  '3': 'Dead',
};

$(document).ready(function () {
  $('[data-status]').each(function () {
    $(this).html(statusMap[$(this).data('status')]);
  })
});
table {
  width: 50%;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Name</th>
    <th>Status</th>
  </tr>
  <tr>
    <td>John Wick</td>
    <td data-status="2"></td>
  </tr>
  <tr>
    <td>Abraham Lincoln</td>
    <td data-status="3"></td>
  </tr>
  <tr>
    <td>Dummy User</td>
    <td data-status="2"></td>
  </tr>
</table>

statusMap 可以通过 json_encode({All values from Referral_status_codes_master}); 从 PHP 端生成

【讨论】:

  • 是的,我做过类似的事情,我想知道的是,这样做有什么缺点吗,假设一年后我想添加一个新状态,那么假设我改变了JS 文件,我仍然可以工作,我想知道这是一种好的做法。
  • 并且需要知道是否有任何JS库仅用于此目的。
  • @RakeshBk 由于您将从现有值生成映射,因此您可能会遇到旧条目没有此类状态名称的情况(糟糕的后端架构)。您所做的只是将服务器操作转移到用户操作
  • 我不太明白,请您解释一下“旧条目没有这样的状态名称”是什么意思,因为旧条目和新添加的状态名称都会出现。
  • @RakeshBk 如果您删除状态 #404 但将患者保留为状态 #404。
猜你喜欢
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2019-12-16
相关资源
最近更新 更多