カスタム ユーザー データにアクセス - Node.js SDK
Atlas App Services を使用すると、ユーザーに関する任意のカスタム データを保存できます。 たとえば、ユーザーの希望言語、誕生日、ローカル タイムゾーン を保存できます。 このデータを読み書きする前に、バックエンドでカスタム ユーザー データを有効にする必要があります。 詳しくは、「 カスタム ユーザー データの有効化 」を参照してください。
始める前に
カスタム ユーザー データを使用するには、まず Atlas App Services でカスタム ユーザー データを有効にする必要があります。
カスタム データを適用するユーザーを作成します。
カスタムユーザーデータの読み取り
User
オブジェクトのcustomDataプロパティでカスタム ユーザー データを取得します。
const customUserData = app.currentUser.customData; console.log(customUserData);
App Services は、基礎となるデータが変更されたときに、 User.customData
の値をすぐに更新しません。 代わりに、ユーザーがアクセス トークンを更新するたび、またはrefreshCustomData()を明示的に呼び出すと、App Services は最新バージョンのカスタム ユーザー データを取得します。これにより、アプリが最新のカスタム ユーザー データを保持できるようになります。
const updatedCustomUserData = await user.refreshCustomData(); console.log(updatedCustomUserData);
注意
ユーザー オブジェクトのcustomData
フィールドは、Node アプリケーションからの読み取り専用です。
MongoClient によるカスタム ユーザー データへの書込み
MongoDB Atlas サービスとmongoClientによる標準 CRUD 操作を使用して、ユーザーのカスタム データにアクセスできます。 次の例では、ユーザーのカスタム データを更新して、ユーザーのfavoriteColor
を赤色に変更します。
// A user must be logged in to use a mongoClient const user = app.currentUser; const mongo = user.mongoClient("mongodb-atlas"); const collection = mongo.db("custom-user-data-database").collection("custom-user-data"); // Query for the user object of the logged in user const filter = { userId: user.id}; // Set the logged in user's favorite color to pink const update = { $set: { favoriteColor: "pink" }}; // Insert document if it doesn't already exist const options = { upsert: true }; const result = await collection.updateOne(filter, update, options);
注意
To modify the custom data field from a client or user function, write permission to the collection in which custom data is stored must be configured. アプリケーションからカスタム データへのクライアントの書込みアクセスを制限する場合は、システム関数からオブジェクトを変更できます。