menu
Is this helpful?

# Node.js

最新バージョン:v1.4.1

更新時間:2023-10-27

ダウンロード:Source Code (opens new window)

# SDK実装

  1. npmを利用してNode.js SDKを取得します
# install SDK
npm install thinkingdata-node --save

# update SDK
npm i thinkingdata-node@{version}
  1. Logbusをインストール

TEシステムにより迅速かつ正確なデータを転送するために、SDK+LogBusの併用でサーバデータのデータレポートを推奨しております。

# 初期設定

SDKの初期設定のコード例:

const ThinkingData = require('thinkingdata-node');
var teSDK = ThinkingData.initWithLoggingMode(LOG_DIRECTORY);

LOG_DIRECTORYはローカルアクセスファイルのアドレスとなります。LogBusのモニターアドレスをこのアドレスに設定すれば自動でアップロードされます。このSDKはloggingModeモードでの複数インスタンスへのファイル書き込みをサポートしていません。

log4js ログライブラリーをプロジェクトで使用している場合は、loggingMode を初期化する際にサンプルプロジェクトの方法を参照してください。

// If you are also using log4js in your project you will need to pass in your own config file
// otherwise it will fail to write to the log
let yourOwnLog4jsConfigExample = {
    appenders: {
        you_console: {
            type: 'console',
            layout: {
                type: 'pattern', pattern: '%[[%d{yyyy-MM-dd hh:mm:ss.SSS}]-[%p]-[pid=%z]-[%f{1}-%l] %m%]'
            }
        },
    },
    categories: {
        you_categories: {
            appenders: ['you_console'],
            level: 'info'
        }
    },
};
let teSDK = ThinkingData.initWithLoggingMode('./log/te', {
    filePrefix: 'test',
    rotateHourly: true,
    pm2: false,
}, yourOwnLog4jsConfigExample);

# メイン機能

ゲストIDとアカウントIDをうまく紐付けるために、もしゲーム内でゲストIDとアカウントID両方を使われる場合は、それらのIDを同時にアップロードするのを推奨しております。同時にアップロードしない場合は、ユーザーを重複にカウントされてしまう可能性があります。

# 3.1 イベント送信

trackを利用してイベントの送信を行います。事前にデータプランをご用意の上、送信してください。以下はモデルコードとなります。

let trackEvent = {
    accountId: '2222',
    distinctId: '1111',
    event: 'test_event',
    time: new Date(),
    ip: '202.38.64.1',
    properties: {
        prop_double: 134.1,
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.track(trackEvent)
  • イベント名称はstringタイプで、英文字と数字、 "_"を含め、最大50文字
  • Key は当プロパティの名称でstringタイプで、英文字と数字、 "_"を含め、最大50文字。TEシステムは一律で小英文字に統一されます
  • Value は当プロパティの値で、String, Number, Bloon, Time, object, array, list objectを対応しております。

ユーザープロパティはイベントプロパティと一致する必要があります

# 3.2 ユーザープロパティを設定

一般のユーザープロパティに関しては、userSetを利用して設定することができますが、 UserSetは元の値を上書きされます。本来該当プロパティに値がない場合は、プロパティが新規作成されます。以下はコード例となります。

let userSetData = {
    accountId: 'node_test',
    properties: {
        prop_date: new Date(),
        prop_double: 134.12,
        prop_string: 'hello',
        prop_int: 666,
        prop_array: ['str1', 'str2'],
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.userSet(userSetData);

# コード例のまとめ

以下のコード例で全ての操作が含まれます、以下の順で利用推奨しております。

var teSDK = ThinkingData.initWithLoggingMode('LOG_DIRECTORY');
let trackEvent = {
    accountId: '2222',
    distinctId: '1111',
    event: 'test_event',
    time: new Date(),
    ip: '202.38.64.1',
    properties: {
        prop_double: 134.1,
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.track(trackEvent)
let userSetData = {
    accountId: 'node_test',
    properties: {
        prop_date: new Date(),
        prop_double: 134.12,
        prop_string: 'hello',
        prop_int: 666,
        prop_array: ['str1', 'str2'],
    },
    callback(e) {
        if (e) {
            console.log(e);
        }
    }
};

teSDK.userSet(userSetData);

teSDK.flush();