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

如何将动态变量映射到对象数组?Sequelize Crypto模型DB数据动态映射咨询

实现方案

可以通过动态属性访问+可扩展映射表的方式实现,不需要提前硬编码动态变量的所有可能取值,具体实现如下:

  • 第一步:定义动态变量到Crypto模型属性的映射表,后续新增交易对仅需更新该表即可
// key为动态变量的取值,value为Crypto模型中对应的属性名,可按需扩展
const cryptoMapping: Record<string, keyof IDBCryptoAttributes> = {
  'BTC': 'BTCUSD',
  'ETH': 'ETHUSD',
  'LTC': 'LTCUSD'
}
  • 第二步:封装通用映射方法
function getMappedValue(cryptoInstance: Crypto, dynamicVar: string): string | undefined {
  // 统一转大写避免大小写匹配问题
  const formattedVar = dynamicVar.toUpperCase()
  const targetProp = cryptoMapping[formattedVar]
  if (!targetProp) return undefined
  // 动态访问实例属性返回对应值
  return cryptoInstance[targetProp] as string
}
  • 第三步:使用示例
// 从数据库查询Crypto实例
const cryptoData = await Crypto.findByPk(1)
// 传入动态变量(可来自用户输入、接口参数等任意动态来源)
const targetValue = getMappedValue(cryptoData, 'btc')

如果需要支持无感知新增交易对,也可以直接通过字符串拼接属性名的方式实现,无需维护映射表:

function getMappedValue(cryptoInstance: Crypto, dynamicVar: string): string | undefined {
  const targetProp = `${dynamicVar.toUpperCase()}USD` as keyof IDBCryptoAttributes
  return cryptoInstance[targetProp] as string ?? undefined
}

内容的提问来源于stack exchange,提问作者user16657995

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04