You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Javascript对Directus集合进行信息增查改及实时更新操作?

Directus 数据实时新增与更新实现方案

1. 编写HTML输入控件

你可以根据排行榜需要提交的字段设计表单,示例结构如下:

<!-- 数据提交表单,默认是新增模式,编辑时填充id和对应字段值 -->
<form id="rankForm">
  <input type="hidden" id="entryId" value="">
  <div>
    <label>用户名:</label>
    <input type="text" id="username" required>
  </div>
  <div>
    <label>得分:</label>
    <input type="number" id="score" required>
  </div>
  <button type="submit">提交</button>
</form>

2. 编写JS交互逻辑

前置配置

先配置你的Directus实例信息,注意生产环境不要硬编码永久令牌,推荐走用户登录流程获取临时访问令牌:

const DIRECTUS_HOST = "你的Directus实例根地址";
const COLLECTION_NAME = "你的排行榜集合名称";
const ACCESS_TOKEN = "你的API访问令牌";

// 你之前已经实现的拉取数据渲染表格的函数,提交成功后调用即可实现实时刷新
async function renderRankTable() {
  // 你原有拉取数据、渲染表格的逻辑
}

实现新增/更新统一提交逻辑

监听表单提交事件,根据隐藏域entryId是否有值判断是新增还是更新操作:

document.querySelector("#rankForm").addEventListener("submit", async (e) => {
  e.preventDefault();
  // 取表单字段值
  const entryId = document.querySelector("#entryId").value;
  const postData = {
    username: document.querySelector("#username").value,
    score: Number(document.querySelector("#score").value)
  };

  try {
    let url = `${DIRECTUS_HOST}/items/${COLLECTION_NAME}`;
    let method = "POST";
    // 有id则走更新逻辑
    if (entryId) {
      url += `/${entryId}`;
      method = "PATCH";
    }

    const res = await fetch(url, {
      method: method,
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${ACCESS_TOKEN}`
      },
      body: JSON.stringify(postData)
    });

    if (res.ok) {
      // 提交成功重置表单
      document.querySelector("#rankForm").reset();
      // 重新渲染表格实现实时更新
      await renderRankTable();
    }
  } catch (err) {
    console.error("提交失败:", err);
  }
});

实现编辑填充逻辑

给表格每一行加编辑按钮,点击时把当前行数据填充到表单即可进入更新模式:

// 示例:给所有编辑按钮绑定点击事件,你可以结合自己的表格渲染逻辑加这段
document.querySelectorAll(".edit-btn").forEach(btn => {
  btn.addEventListener("click", () => {
    // 取当前行存储的条目数据
    const rowData = btn.dataset;
    document.querySelector("#entryId").value = rowData.id;
    document.querySelector("#username").value = rowData.username;
    document.querySelector("#score").value = rowData.score;
  });
});

注意事项

  • 操作前先在Directus后台给对应角色开启集合的create、update权限,字段权限也要同步配置
  • 可根据需求增加表单校验逻辑,避免提交无效数据
  • 建议添加操作成功/失败的用户提示,提升使用体验

内容的提问来源于stack exchange,提问作者Gussie Is a Successful Warlock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:06:01