我想在代码和DB对象中使用Sperate逻辑来对象。 所有想法都是将完整的逻辑与数据库内容完全隔离(出于几个原因......其中一个就是我希望将来能与其他数据库一起使用)
现在我正在使用MongoDB,我创建了一些可以处理创建并将打字稿对象写入DB的infractractures,它是这样的:
import Address, { AddressSchema } from './addressDetails';
import { Document, Schema, model } from 'mongoose';
export default class User {
name: String;
address: Address;
constructor(params: { name: String, address: Address }) {
this.name = params.name;
this.address = params.address;
}
}
const UserSchema = new Schema({
name: String,
details: AddressSchema
});
export interface UserDocument extends User, Document { };
export const UserModel = model<UserDocument>('User', UserSchema);
现在地址是另一个看起来像这样的对象:
import { Document, Schema, model } from 'mongoose';
export default class Address {
country: String;
city: String;
streetAddress: String;
constructor(params: { country: String, city: String, streetAddress: String }) {
this.country = params.country;
this.city = params.city;
this.streetAddress = params.streetAddress;
}
}
export const AddressSchema = new Schema({
country: String,
city: String,
streetAddress: String
});
所以实际上Address是User中的嵌套模式。 因此,当我保存UserModel时,它看起来像这样:
const newUser = new User(newUserParams);
const newUserModel = new UserModel(newUser);
public saveModel(newUserModel): Promise<any> {
return new Promise((resolve, reject) => {
newUserModel.save((err, data) => {
if (err) {
log('error', err, undefined, undefined);
reject(err);
}
resolve(data);
});
});
}
在数据库内部,我们保存的用户看起来像嵌套信息,其地址部分为ID。
现在我不知道的是如何阅读文档和分析,以便我可以创建一个新的完整用户主对象实例。
通过完整我的意思是它还会创建来自文档的嵌套地址信息的实例。
非常感谢你们!