【发布时间】:2021-05-29 09:08:31
【问题描述】:
我有一个 Mongo 用户集合和一个地址集合。每个地址归一个用户所有。这是我的架构类:
export type UserDocument = User & mongoose.Document
@Schema({ timestamps: true })
export class User {
// @Prop({ type: mongoose.Types.ObjectId })
_id: string
@Prop({ required: true })
name: string
@Prop({ required: true, unique: true })
email: string
@Prop({ select: false })
password: string
}
export const UserSchema = SchemaFactory.createForClass(User)
export type AddressDocument = Address & Document
@Schema({ timestamps: true })
export class Address {
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: User.name })
user: User
@Prop()
line1: string
@Prop()
line2?: string
@Prop()
city: string
@Prop()
state?: string
@Prop()
country: string
}
export const AddressSchema = SchemaFactory.createForClass(Address)
然后我有一个 AddressService 可以为用户获取地址:
@Injectable()
export class AddressService {
constructor(@InjectModel(Address.name) private addressModel: Model<AddressDocument>) {}
async save(address: AddressDto): Promise<Address> {
const model = await this.addressModel.create(address)
return model.save()
}
async findAddressForUser(userId: string) {
const userObjectId = new mongoose.Types.ObjectId(userId)
const users = await this.addressModel.find({ user: userObjectId })
}
}
此代码有错误:Type '_ObjectId' is not assignable to type 'Condition<User>
我也尝试将 userId 作为字符串传递,但也没有用。
使用来自另一个集合的引用 ID 查询集合的正确方法是什么?
【问题讨论】:
-
你有没有找到正确的方法来使用道具模型和猫鼬通过引用找到数据。如果可以,请分享。我很难找到它。
-
@YerfA42 检查我添加的答案。这行得通。
标签: typescript mongoose nestjs