TypeORM在尝试保存到数据库时更改了我的提交对象数据



我使用TypeORM在数据库中插入数据时遇到了一些问题

我的问题:我需要发送到数据库的是以下数据:标题、描述、用户id、idCategoryService和createby。其中id's和title不为空

我的路线:

public async create(req: Request, res: Response): Promise<Response> {
try {
const idUser = req.context?.userId;
const service = req.body;
await serviceSchema.validateAsync(service, opts);
const serviceRepository = getRepository(Service);
const existsService = await serviceRepository.findOne({
where: {
title: service.title, serviceCategory: service.idServiceCategory, user: idUser
}
});
if (existsService) return this.sendErrorResponse(res, { code: 409, message: ['Service already created'] });
const newService: Service = Object.assign(new Service(), { ...service, idUser: idUser, createdBy: idUser });
console.log(newService)
await serviceRepository.save(newService);
return res.status(201).send({
code: 201,
message: 'Success',
data: [newService]
})
} catch (error) {
return this.sendCreateUpdateErrorResponse(res, error);
}

}

使用object assign创建对象时:显示于console.log()

Service {
title: 'Test1',
description: 'Test2',
idServiceCategory: 'e704a4c4-b984-493f-877c-d5b6f4fdeb5b',
idUser: '32ce26fa-bebe-4cdd-af40-f3e338ba2b5c',
createdBy: '32ce26fa-bebe-4cdd-af40-f3e338ba2b5c'
}

但是看看在typeform日志中传递了什么:

query: INSERT INTO "ijob_api"."Service"("id", "createdAt", "updatedAt", "title", "description", "createdBy", "closed", "idUser", "idServiceCategory") VALUES ($1, $2, $3, $4, $5, $6, $7, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["d458357e-7120-4d78-b66b-5b2a410efe79","2021-08-30T14:43:25.944Z","2021-08-30T14:43:25.944Z","Test1","Test2","32ce26fa-bebe-4cdd-af40-f3e338ba2b5c",0]

My idUser stay 0

like this my driver error in postgresql

driverError: error: null value in column "idUser" of relation "Service" violates not-null constraint
//code: 23502 -- postgres

我找到了一个解决方案,我的问题是在这个方法:

const newService: Service = Object.assign(new Service(), { ...service, idUser: idUser, createdBy: idUser });

传递的不是userid,而是用户,最后是userid

的例子:

const newService: Service = Object.assign(new Service(), { user: idUser, ...service, createdBy: idUser });

最新更新