Files
teams-alias/utils.js
Julian Freeman 660fb811a2 优化env文件
2026-01-05 12:38:13 -04:00

74 lines
2.7 KiB
JavaScript

const NOCODB_CONFIG = {
// Token and URL are loaded from env.js (ENV_SECRETS global variable)
TOKEN: (typeof ENV_SECRETS !== 'undefined' && ENV_SECRETS.NOCODB_TOKEN) ? ENV_SECRETS.NOCODB_TOKEN : "",
LIST_URL: (typeof ENV_SECRETS !== 'undefined' && ENV_SECRETS.NOCODB_LIST_URL) ? ENV_SECRETS.NOCODB_LIST_URL : "",
FIELD_ID: (typeof ENV_SECRETS !== 'undefined' && ENV_SECRETS.NOCODB_FIELD_ID) ? ENV_SECRETS.NOCODB_FIELD_ID : "账号ID",
FIELD_ALIAS: (typeof ENV_SECRETS !== 'undefined' && ENV_SECRETS.NOCODB_FIELD_ALIAS) ? ENV_SECRETS.NOCODB_FIELD_ALIAS : "_最终输出"
};
/**
* 从 NocoDB 获取所有别名记录并整理为键值对
* @returns {Promise<Object>} { "账号ID": "别名", ... }
*/
async function fetchAliasesFromDB() {
const listUrl = NOCODB_CONFIG.LIST_URL;
const headers = {
"xc-token": NOCODB_CONFIG.TOKEN,
"Content-Type": "application/json"
};
if (!listUrl || !NOCODB_CONFIG.TOKEN) {
console.error("Teams Alias: 缺少配置 (URL 或 Token),请检查 .env 文件。");
throw new Error("Missing configuration");
}
let allAliases = {};
let offset = 0;
const limit = 1000;
try {
while (true) {
// 构建带参数的 URL
const url = new URL(listUrl);
url.searchParams.append("limit", limit);
url.searchParams.append("fields", `${NOCODB_CONFIG.FIELD_ID},${NOCODB_CONFIG.FIELD_ALIAS}`);
url.searchParams.append("offset", offset);
const response = await fetch(url.toString(), { headers });
if (!response.ok) {
console.error(`获取数据失败: ${response.status} ${response.statusText}`);
throw new Error("网络请求失败");
}
const data = await response.json();
const rows = data.list || [];
if (rows.length === 0) {
break;
}
// 整理数据
rows.forEach(row => {
if (row[NOCODB_CONFIG.FIELD_ID] && row[NOCODB_CONFIG.FIELD_ALIAS]) {
// key = 账号ID, value = _最终输出
allAliases[row[NOCODB_CONFIG.FIELD_ID]] = row[NOCODB_CONFIG.FIELD_ALIAS];
}
});
if (rows.length < limit) {
break; // 已获取所有数据
}
offset += limit;
}
console.log(`同步完成,共获取 ${Object.keys(allAliases).length} 条别名记录。`);
return allAliases;
} catch (error) {
console.error("同步别名数据时出错:", error);
throw error; // 向抛出以便调用者处理
}
}