Auth0 Home Blog Docs

getUsers doesn't include recently updated metadata

metadata

#1

I am using the node-auth0 package, and I have a call to management.updateUserMetadata() followed by management.getUsers(). The response from getUsers() doesn’t seem to include the changes that I made to the metadata in updateUserMetadata(). If I call getUser for the specific updated user then I can see the updates, but getUsers() doesn’t seem to include the results, unless if I wait for a few seconds before calling it. Are these methods not synchronized? Or is there something I am doing wrong? I’ve included some sample code below that illustrates the issue I am seeing with a simple nested callback.

var auth0 = require('auth0');
var _ = require('lodash');

let ManagementClient = auth0.ManagementClient;
let management = new ManagementClient({
    token: 'token',
    domain: 'domain'
});

var userId = 'auth0|userid';
var metadata = {
    testValue: 'newValue'
};

management.updateUserMetadata({ id: userId }, metadata).then(function(updateResponse) {
    // This response looks correct:
    console.log(updateResponse);

    let params = {
        per_page: 100,
        page: 0,
        q: 'identities.connection:connection-name'
    };
    management.getUsers(params).then(function(auth0Users) {
        var findUser = _.find(auth0Users, { user_id: userId });
        // this still has the data that looks like prior to the update above. 
        console.log(findUser); 
    });
});

#2

This is caused because getUsers implements ElasticSearch and the data needs to be indexed in ElasticSearch before you can retrieve it. Unfortunately, this can take upto a few seconds, if you know the user_id ahead of time. Its better to use getUser instead as it’ll return the true state of the user.


#3

Got it, thank you for the reply. That makes sense, and explains the behavior I am seeing. Unfortunately it doesn’t make things easier, as I am building an internal screen that show a list of users, and a screen for editing a user. When you “save” your changes to a user I navigate back to the screen that lists users, and I query using getUsers(), but it doesn’t show my latest saved changes. I can work-around this, but it’s not as clean as I would have hoped.

Thank you again for the explanation!


#4