Один и тот же ответ отправлен независимо от пользователя, вошедшего в систему - PullRequest
0 голосов
/ 25 июня 2019

Я ищу, как я могу отправить ответ экспрессом в Nodejs на целевое устройство Android.Например, некоторые пользователи хотят войти в мое приложение в Android и примерно в одно и то же время отправили запрос api express, который отвечает объекту, если пароль равен записи в базе, но все пользователи получили один и тот же объект одного из пользователей.

app.post('/login', (request, response) => {
    var objectaccount = {
        name: name,
        amount: amount
    };

    var post_data = request.body;

    var user = post_data.user;
    var userPassword = post_data.password;

    var db = client.db('clientbase');

    db.collection('users')
        .find({
            'user': user
        }).count(function(err, number) {
            if (number == 0) {
                response.json('email not exist');
                console.log('email not exist');
            } else {
                db.collection('user')
                    .findOne({
                        'email': email
                    }, function(error, user) {
                        var name = user.name;
                        if (userPassword == user.password) {
                            objectaccount.name = user.name;
                            objectaccount.amount = user.amount;
                            response.json(objectaccount);
                            console.log(objectaccount);
                        } else {
                            response.json('password invalid');
                            console.log('password invalid');
                        }
                    })
            }
        })
});

пример: у меня 3 пользователя в mongodb {пользователь, сумма} (- user1 (200), -user2 (399), -user3 (500)), три пользователя нажимают в приложении, чтобы войти вв то же время.Экспресс-отправка 3 ответа json и 3 пользователя имеют один и тот же объект (user1 (200)) вместо user1 имеют user1 (200), user2 - user2 (399) и user3-user3 (500);

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

На высоком уровне я это заметил.В первом вызове БД вы выбираете пользователя на основе значения из полезной нагрузки POST (переменная user)

...
db.collection('users')
        .find({
            'user': user // Here, you are fetching the record by user (from POST payload)
        }).count(function(err, number) {
            if 
...
  1. Однако во втором вызове БД вы, кажется,использовать email, который, я считаю, не передается в теле POST и не получается из первого вызова БД.Я боюсь, что эта переменная может быть где-то установлена.Если это не то же самое, что переменная user или некоторые данные, которые мы получаем с помощью user?

  2. Также просто интересно -> имя коллекции кажется различным в обоих вызовах db- пользователь против пользователей?

enter image description here

0 голосов
/ 25 июня 2019

User-Agent должно помочь в идентификации поставщика ОС;Например;

app.get('/route', (req, res) => {

  /\bAndroid\b/.test(req.get('User-Agent') || '')
    ? res.end('An Android user!')
    : res.end('A non-Android user!');

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...