Я делаю это совсем иначе, чем ваш подход. Я использую Postgres, но это не имеет большого значения, но я использую Nestjs, чтобы сделать его более похожим на Angular. Это более простая настройка, чем ваша, но Nestjs не должен иметь большого значения ни потому, что он почти не знает о TypeORM.
В верхней части контроллера после импорта:
import {
Controller,
Get,
Post,
Patch,
Delete,
HttpException,
HttpStatus,
Body,
Req,
HttpCode,
Param, Query
} from '@nestjs/common';
import { EnrolleesService } from './enrollees.service';
import { Enrollees } from './enrollees.entity';
@Controller('api/enrollee') // /enrollee is the route
export class EnrolleeController {
constructor(private readonly EnrolleeService: EnrolleeService) {}
Добавление элемент, пользователь, что угодно в контроллере:
@Post()
async addItem(@Req() req, @Body() recordData): Promise<Enrollees> {
const result: Enrollees = await this.EnrolleesService.addItem(recordData);
if (!result)
throw new HttpException('Error adding new Enrollee', HttpStatus.BAD_REQUEST);
return result;
}
В службе:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository, getManager, getRepository } from 'typeorm';
import { Enrollees } from './enrollees.entity';
@Injectable()
export class EnrolleesService {
private entityManager = getManager();
constructor(
@InjectRepository(Enrollees)
private readonly enrolleesRepository: Repository<Enrollees>
) {}
async addItem(recordData): Promise<Enrollees> {
return await this.enrolleesRepository.save(recordData);
}
Возможно, проблема в том, что вы пытаетесь перегрузить не оператор "< <", а оператор "< < <>"
Из файла .h замените [ 113]
friend std::ostream &operator<< <>(std::ostream &os, messageTemplate<A> &aTemplate);
с
friend std::ostream &operator<< (std::ostream &os, messageTemplate<A> &aTemplate);
Я вижу две проблемы:
1) объявление перегруженной функции для оператора < < содержит символы <>
, которые вызывают сбой компиляции. Это можно исправить, удалив <>
2) определение перегруженной функции для оператора < < (и класс ctor) существует в исходном файле, что вызывает сбой компоновщика. Это можно исправить, переместив эти определения из исходного файла в файл заголовка.
Попробуйте использовать следующие заголовочные и исходные файлы, это работает для меня ...
template.h
#pragma once
#include <iostream>
#include <string>
//class must be forward declared because it contains a friend function template
template<class T> class messageTemplate;
//friend function also must be forwards declared
template<class A> std::ostream &operator<<(std::ostream &os, messageTemplate<A> &aTemplate);
template <class T>
class messageTemplate {
public:
messageTemplate(const std::string &topic, T data);
template <class A>
friend std::ostream &operator<<(std::ostream &os, messageTemplate<A> &aTemplate);
private:
std::string topic;
T data;
};
template<class T>
messageTemplate<T>::messageTemplate(const std::string &topic, T data):topic(topic), data(data) {};
template <class T>
std::ostream &operator<< (std::ostream &os, messageTemplate<T> &aTemplate) {
os << "topic: " << aTemplate.topic << " data: " << aTemplate.data;
return os;
};
main.cpp
#include "template.h"
#include <iostream>
using namespace std;
int main()
{
messageTemplate< int > test{ "test", 69 };
cout << test << endl;
return 0;
}
Выход консоли: [1111 ]
topic: test data: 69
Process finished with exit code 0