gpt4 book ai didi

node.js - 使用 typescript 创建 Mongoose 模型 - 子文档

转载 作者:IT老高 更新时间:2023-10-28 13:30:22 25 4
gpt4 key购买 nike

我正在使用本文所述的 typescript 实现 Mongoose 模型:https://github.com/Appsilon/styleguide/wiki/mongoose-typescript-models并且不确定当您使用子文档数组时这是如何翻译的。假设我有以下模型和架构定义:

interface IPet {  
name: {type: mongoose.Types.String, required: true},
type: {type: mongoose.Types.String, required: true}
}

export = IPet


interface IUser {
email: string;
password: string;
displayName: string;
pets: mongoose.Types.DocumentArray<IPetModel>
};

export = IUser;


import mongoose = require("mongoose");
import IUser = require("../../shared/Users/IUser");
interface IUserModel extends IUser, mongoose.Document { }

import mongoose = require("mongoose");
import IPet = require("../../shared/Pets/IPet");
interface IPetModel extends IPet, Subdocument { }

将新宠物添加到 user.pet 子文档的代码:

addNewPet = (userId: string, newPet: IPet){
var _user = mongoose.model<IUserModel>("User", userSchema);
let userModel: IUserModel = await this._user.findById(userId);
let pet: IPetModel = userModel.pets.create(newPet);
let savedUser: IUser = await pet.save();
}

查看链接后,这似乎是处理子文档所需的理想方法。但是,这种情况似乎会导致抛出 CasterConstructor 异常:

TypeError: Cannot read property 'casterConstructor' of undefined at Array.create.

使用上面链接文章中概述的 Mongoose 模型时,处理子文档的方法是否正确?

最佳答案

你可以试试这个包https://www.npmjs.com/package/mongoose-ts-ua

@setSchema()
class User1 extends User {
@prop()
name?: string;

@setMethod
method1() {
console.log('method1, user1');
}
}

@setSchema()
class User2 extends User {
@prop({ required: true })
name?: string;

@prop()
child: User1;
}

export const User2Model = getModelForClass<User2, typeof User2>(User2);

用法

let u2 = new User2Model({ child: { name: 'u1' } }); 

关于node.js - 使用 typescript 创建 Mongoose 模型 - 子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com