我创建了以下服务来使用 twilio 向用户发送登录代码短信:
短信服务.ts
import { Injectable, Logger } from '@nestjs/common';
import * as twilio from 'twilio';
Injectable()
export class SmsService {
private twilio: twilio.Twilio;
constructor() {
this.twilio = this.getTwilio();
}
async sendLoginCode(phoneNumber: string, code: string): Promise<any> {
const smsClient = this.twilio;
const params = {
body: 'Login code: ' + code,
from: process.env.TWILIO_SENDER_NUMBER,
to: phoneNumber
};
smsClient.messages.create(params).then(message => {
return message;
});
}
getTwilio() {
return twilio(process.env.TWILIO_SID, process.env.TWILIO_SECRET);
}
}
Run Code Online (Sandbox Code Playgroud)
包含我的测试的 sms.service.spec.js
import { Test, TestingModule } from '@nestjs/testing'; …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 TypeORM 的 NestJS
我得到了两个具有关系的实体:
export class Device {
@PrimaryGeneratedColumn()
id: number;
@Column("macaddr")
mac: string;
@OneToMany(type => DeviceStatus, deviceStatus => deviceStatus.mac)
@JoinColumn()
status: DeviceStatus[]
@Column()
created: Date;
}
export class DeviceStatus {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => Device, device => device.mac)
@JoinColumn({ name: "mac", referencedColumnName: "mac" })
mac: Device;
@Column()
deviceState: number;
@Column()
created: Date;
}
Run Code Online (Sandbox Code Playgroud)
我想获取 Device 但只有它的status属性是最新的 DeviceStatus 。
现在我这样做:
const deviceQuery: Device = await this.deviceRepository
.createQueryBuilder("device")
.where('device.id = :id AND "device"."userId" = :user', {id: id, …Run Code Online (Sandbox Code Playgroud)