Как в Prisma обновить маппинги ключей после выполнения raw запроса?

Как можно реализовать автоматическое маппинг имен колонок в разных стилях (camelCase и snake_case) при использовании $queryRaw вместо стандартных CRUD операций с Prisma client, а не изменением ключей напрямую, как можно сделать это более элегантно?
  • 19 марта 2024 г. 0:59
Ответы на вопрос 1
Для обновления маппингов ключей в Prisma после выполнения raw запроса необходимо использовать метод `getRawParameters` и `setRawParameters` доступный в Prisma Client.

Пример использования:

```typescript
const result = await prisma.$queryRaw`SELECT * FROM users`;
const parameters = prisma.getRawParameters(result);
parameters.records.forEach(record => {
  record.id = record.userId; // пример обновления маппинга ключей
});
const updatedResult = prisma.setRawParameters(result, parameters);
```

Чтобы реализовать автоматическое маппинг имен колонок в разных стилях (camelCase и snake_case) при использовании `$queryRaw`, можно создать функцию, которая будет автоматически преобразовывать имена колонок в нужный стиль. Например, так:

```typescript
const mapColumns = (result) => {
  return result.map(row => {
    const newRow = {};
    for (const key in row) {
      const newKey = key.replace(/_([a-z])/g, (match, p1) => p1.toUpperCase());
      newRow[newKey] = row[key];
    }
    return newRow;
  });
}

const result = await prisma.$queryRaw`SELECT * FROM users`;
const updatedResult = mapColumns(result);
```

Таким образом, вы можете автоматически преобразовывать имена колонок в нужный стиль при получении результатов запроса с помощью `$queryRaw`. Это позволит сделать ваш код более гибким и элегантным.
Похожие вопросы