簡體   English   中英

基於 postgres 布爾值檢查復選框

[英]Check checkbox based on postgres boolean

我有一個名為 form.ejs 的頁面,用戶可以在其中根據適用於他們的項目檢查復選框。

<div class="container">
        <td class="td-form" class="td-form">
          <div class="tooltipupc">
          <input type="checkbox" id="repoLocationNaming" name="repoLocationNaming" value="<%= model.repoLocationNaming ? 'checked' : '' %>" onclick="checkboxTicked('repoLocationNaming', 1.85)">
          <label for="repoLocationNaming" style="color:red">Repo location and Naming Convention</label><br>
        </td>
</div>

<div class="container">
        <td class="td-form" class="td-form">
          <div class="tooltipupc">
          <input type="checkbox" id="userGroupperMissions" name="userGroupperMissions" value="<%= model.userGroupperMissions ? 'checked' : '' %>"  onclick="checkboxTicked('userGroupperMissions', 1.85)">
          <label for="userGroupperMissions" style="color:red">User Groups (Read, Write, Reviewer)</label><br>
        </td>
</div>

表單完成后,用戶可以根據選中的復選框將這些布爾值保存到 postgres 數據庫。 這些被保存到 postgres 數據庫中。 這是通過路由代碼中的函數完成的。

    router.post("/", async (req, res) => {
      const sql = "INSERT INTO Pipelines (slug, gear, app, url, score, rating, immatureCount, poorMaturityCount, maturingCount, matureUpQualifiedCount, chaosCount, rallyGitIntergration, pullRequestBasedEnablement, repoLocationNaming, userGroupperMissions) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)";
      const pipeline = [slugify(req.body.url, { lower: true, strict: true }), req.body.gear, req.body.app, req.body.url, req.body.score, req.body.rating, req.body.immatureAmt, req.body.poorMaturityAmt, req.body.maturingAmt, req.body.matureUpQualifiedAmt, req.body.chaosAmt, req.body.rallyGitIntergration, req.body.pullRequestBasedEnablement, convertCheckbox(req.body.repoLocationNaming), convertCheckbox(req.body.userGroupperMissions)];
      pool.query(sql, pipeline, (err, result) => {
        if (err) {
          return console.error(err.message);
        }
 res.redirect(`/pipelines/${slugify(req.body.url, { lower: true, strict: true })}`);
      });
    
      function convertCheckbox(checkboxID){
        if (checkboxID === "") {
          return true;
        } else {
          return false;
        }
      }
    });

當用戶返回表單時,我希望在等於 true 時使用檢查填充表單復選框。 例如,我可以像這樣填充輸入的 url。

<input required value="<%= model.url %>" type="text" name="url" id="url" style="width: 70%"><br>

下面是表單的獲取路徑,應該由用戶輸入的信息填充。

router.get("/edit/:id", async (req, res) => {
  const idRating = req.params.id;
  const sqlRating = "SELECT * FROM Pipelines WHERE pipeline_id = $1";
  pool.query(sqlRating, [idRating], (err, result) => {
    if (err) {
      return console.error(err.message);
    }
    res.render("pipelines/edit", { model: result.rows[0] });
  });

}); 

文件 form.ejs 包含在 edit.ejs 中。 當用戶訪問如上所示的路由 edit.js 時,我想檢查{ model: result.rows[0] }中的復選框值是真還是假。 如果它們是真的,那么我希望選中該復選框。 如何檢查此布爾值並將其等同於選中的復選框?

<input type="checkbox" <%= model.repoLocationNaming ? 'checked' : '' %>
  id="repoLocationNaming" name="repoLocationNaming"
  onclick="checkboxTicked('repoLocationNaming', 1.85)>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM