Конечная точка Коа всегда возвращает 404 - PullRequest
0 голосов
/ 25 сентября 2018

Я столкнулся с проблемой, когда я считаю, что вызов возвращается слишком рано, и мой ответ всегда отображается как 404 - Not Found.Запись сделана в базе данных, поэтому она возвращается рано из того, что я могу сказать.Я думаю, что я ждал правильных частей, но ясно, что это не так.Я также попытался дождаться db.AddUser, но безуспешно.

Конечная точка

//Post signup
public async SignUpAsync(ctx: Context) {
    try {
        let code = await SignUpVerification.GenerateCode();
        let user = await this.InfoFromRequest(ctx.request.body);
        user.Code = code;
        await db.AddUser(user);
        console.log('added db user');
        //await SignUpVerification.SendVerificationText(user.PhoneNumber, code)
        console.log('success message');
        ctx.body = 'Success';
    } catch (err) {
        ctx.status = 400;
        ctx.body = err;
    }
};

private async InfoFromRequest(requestBody: any) {
    return {
        Email: requestBody['email'],
        FirstName: requestBody['firstname'],
        MiddleName: requestBody['middlename'],
        LastName: requestBody['lastname'],
        Pwd: requestBody['pwd'],
        PhoneNumber: requestBody['phonenumber']
    } as IUserModel;
}

Вызов модели

async AddUser(newUser: IUserModel) {
    return await userModel.AddUser(newUser);
}

Вызов модели

async AddUser(newUser: IUserModel) {
    try {
        var userToSave = new User({
            name: {
                firstname: newUser.FirstName,
                middlename: newUser.MiddleName,
                lastname: newUser.LastName
            },
            email: newUser.Email,
            pwd: newUser.Pwd,
            code: newUser.Code,
            phonenumber: newUser.PhoneNumber
        });

        let result = await userToSave.save();
        console.log('New User saved');
        console.log(result);
    } catch (err) {
        throw new Error(err);
    }
}

Метод генерирует код, который возвращается из вызова модели

static async GenerateCode() {
    return await (Math.floor(Math.random() * 90000) + 10000).toString();
}

1 Ответ

0 голосов
/ 28 сентября 2018

Evert был на правильном пути, глядя на то, как была добавлена ​​функция в промежуточном программном обеспечении.

До

this.router.post(
            'login/',
            (ctx) => {
                this.controller.LoginAsync(ctx);
            }
        );

Правильно

this.router.post(
            'login/',
            async (ctx) => {
                await this.controller.LoginAsync(ctx);
            }
        );
...