Я немного новичок в Typescript и loopback (lb4), и я нахожусь в затруднительном положении, когда я немного дергаю себя за волосы и надеюсь, что сообщество сможет помочь. Я пытаюсь завершить поиск идентификатора записи на основе ключа API, который сопоставлен с записью базы данных, поэтому я могу использовать эту запись в качестве внешнего ключа для получения другого набора результатов из другой таблицы базы данных. Я работаю с уже существующей базой данных
Ошибка, показанная ниже.
loopback: соединитель: mssql Результат: ноль
{ "" Наборы записей: [[]], "записи": [], "выход": {}, "rowsAffected": [0]}
+ 302ms /Users/bloop/Desktop/AngularTestFolder/ZaharaReporting/zaharareporting/dist/controllers/tenancy.controller.js:27
return object.tenancyid.valueOf;
^
TypeError: Невозможно прочитать свойство tenancyid с нулевым значением
Я пробовал несколько вещей и подозреваю, что это нехватка понимания некоторых основ машинописи или loopback4, поэтому мои извинения, если это так, я просто обнаруживаю, что перехожу к тем же идеям о том, как обойти это, поэтому мне нужно, чтобы кто-то указал, почему и как я глуп, пожалуйста.
Я пытаюсь заставить конечную точку /api/{apikey}/GetSpecificBusinessunit
'работать.
но я получаю `FindTenancyID.IdOnly ', возвращающийся как неопределенный
import {
repository,
} from '@loopback/repository';
import {
param,
get,
} from '@loopback/rest';
import { Tenancy, Businessunit } from '../models';
import { TenancyRepository, BusinessunitRepository } from '../repositories';
class TenancyHelper {
constructor(@repository(TenancyRepository)
public tenancyRepository: TenancyRepository) { }
// Query filter tenancy to get Id only
async idOnly(api: String) {
return await this.tenancyRepository.findOne(
{ where: { apikey: api }, fields: { tenancyid: true }, limit: 1 },
function (err: any, object: Tenancy) {
//console.log("TenancyId was " + object.tenancyid);
return object.tenancyid.valueOf;
}).catch(a => console.log(a));
}
}
export class TenancyController {
constructor(
@repository(TenancyRepository)
public tenancyRepository: TenancyRepository,
@repository(BusinessunitRepository)
public businessunitRepository: BusinessunitRepository,
) { }
@get('/api/{apikey}/GetSpecificBusinessunit', {
responses: {
'200': {
description: 'Get BusinessUnit by API Key',
content: { 'application/json': { schema: { 'x-ts-type': Businessunit } } },
},
},
})
async GetBusinessunit(
@param.path.string('apikey') Apikey: String,
FindTenancyId = new TenancyHelper(this.tenancyRepository),
): Promise<Businessunit[]> {
return new Promise<Number>(function (resolve, reject) {
Number(FindTenancyId.idOnly(Apikey));
})
.then(a => {
console.log("This was the excecuted: " + a);
return this.businessunitRepository.find(
{ where: { tenancyid: a } })
})
}
Я ожидаю, что JSON-объект с возвратом всех бизнес-единиц с этим ключом API аренды определен в пути, который будет возвращен.