api-embed

API嵌入程序

Usage no npm install needed!

<script type="module">
  import apiEmbed from 'https://cdn.skypack.dev/api-embed';
</script>

README

API嵌入程序

说明

  1. 提供API埋点方法

示例代码

const mysqlOptions = {
  mysqlOpt: {
    host: 'IP Address',
    port: 3306,
    user: 'username',
    password: 'password',
    database: 'db name',
  },
  insertSql: 'INSERT INTO db.table_name (col1, col2, col3) VALUES (?, ?, ?);',
};
const redisOptions = {
  redisOpt: {
    host: 'IP Address',
    port: 6379,
    password:'auth password',
    db: 0,
  },
  cachePrefix: 'testtest',
};

const apiEmded = new ApiEmded(redisOptions, mysqlOptions);
// 根据inserSql返回一个二维数组,以便写入数据库
ApiEmded.prototype.getValues = function getValues() {
  if (this.redisClient.connected) {
    const tradeDate = this.getDataDate();
    const prefix = `${this.cachePrefix}-${tradeDate}-`;
    return this.redisClient.keysAsync(`${prefix}*`)
      .then(keys => Promise.all(keys.map(key => this.redisClient.getAsync(key).then((value) => {
        const factorId = key.replace(prefix, '');
        // this.redisClient.delAsync(key);
        return [factorId, tradeDate, value];
      }))));
  }
  return Promise.resolve(null);
};
// 模拟入库,实际应用时不需要该步骤
setTimeout(() => {
  apiEmded.batchWriteInDb();
}, 3000);
// 模拟将数据缓存至redis中,实际应用时,不需要该步骤
setTimeout(() => {
  apiEmded.increase('1111');
  apiEmded.increase('1111');
  apiEmded.increase('2222');
  apiEmded.increase('3333');
  apiEmded.increase('2222');
  apiEmded.increase('1111');
}, 1000);