Related #4018
例えばこんな感じ。
import * as mongo from 'mongodb';
import * as deepcopy from 'deepcopy';
import db from '../db/mongodb';
import isObjectId from '../misc/is-objectid';
import { pack as packUser } from './user';
const AbuseUserReport = db.get<IAbuseUserReport>('abuseUserReports');
AbuseUserReport.createIndex('userId');
AbuseUserReport.createIndex('reporterId');
AbuseUserReport.createIndex(['userId', 'reporterId'], { unique: true });
export default AbuseUserReport;
export interface IAbuseUserReport {
_id: mongo.ObjectID;
createdAt: Date;
userId: mongo.ObjectID;
reporterId: mongo.ObjectID;
comment: string;
}
type ReportType = string | mongo.ObjectID | IAbuseUserReport;
export const find = async (report: ReportType) =>
isObjectId(report) ? await AbuseUserReport.findOne({ _id: report }) :
typeof report === 'string' && mongo.ObjectID.isValid(report) ? await AbuseUserReport.findOne({ _id: new mongo.ObjectID(report) }) :
report as IAbuseUserReport;
export const packMany = (reports: ReportType[]) =>
Promise.all(reports.map(pack));
export const pack = async (report: ReportType) => {
const source = await find(report);
return {
id: source._id,
reporter: await packUser(source.reporterId, null, { detail: true }),
user: await packUser(source.userId, null, { detail: true })
};
};
(どこら辺が例えばなのかわからない…)
id: source._id, みたいに個々の必要な値ごとに設定するという意味ならそんな感じでいいとは思います
直接関係ないですが
import { pack as packUser } from './user';みたいに別名でインポートしたくないので
最初から
`
export const packUser
export const packAbuseUserReport
みたいに定義したい気がする
id: source._id,みたいに個々の必要な値ごとに設定するという意味ならそんな感じでいいとは思います
その通りです。
実質 Duplicate of #4018