用打字稿中的子文档描述猫鼬模型
Posted
技术标签:
【中文标题】用打字稿中的子文档描述猫鼬模型【英文标题】:Describing a mongoose model with sub-document in typescript 【发布时间】:2017-01-23 00:23:49 【问题描述】:您好,我是 Typescript 的新手,我正在尝试用 typescript 中的子文档来描述猫鼬模型。
所以如果我有下面的示例模型:
var mongoose = require("mongoose");
var ResponseItemSchema = new mongoose.Schema(
question : String,
questionChoice : [String],
choiceType: String,
hidden : Boolean,
adLogic : skipTo: String, skipOn: String
);
var AdInstanceSchema = new mongoose.Schema(
adMsg : type: String, required: true,
responseSet : [ResponseItemSchema],
modified_dt: type: Date, default: Date.now ,
created_dt: Date
);
var CustomerAdSchema = new mongoose.Schema(
customerId : type: mongoose.Schema.Types.ObjectId,
ref: 'CustomerSchema', required: true,
adName : type: String, rquired: true, index:true,
ad : [AdInstanceSchema],
msg : type: String, default: 'Thankyou.',
modified_dt: type: Date, default: Date.now ,
created_dt: Date
);
我了解当模式没有子文档时如何执行此操作。 我如何将其描述为 typecipt 类?
【问题讨论】:
【参考方案1】:例如,ResponseItemSchema
的完整架构和类型定义可能如下所示:
var ResponseItemSchema = new mongoose.Schema(
question : String,
questionChoice : [String],
choiceType: String,
hidden : Boolean,
adLogic : skipTo: String, skipOn: String
);
export interface IResponseItem extends mongoose.Document
question: string;
questionChoice: Array<string>;
choiceType: string;
hidden: boolean;
adLogic:
skipTo: string,
skipOn: string
export interface IResponseItemModel extends mongoose.Model<IResponseItem>
export var ResponseItem: IResponseItemModel = <IResponseItemModel>mongoose.model<IResponseItem>('ResponseItem', ResponseItemSchema);
在您的其他源文件中,您现在可以像这样导入和使用它:
import ResponseItem, IResponseItem, IResponseItemModel from '../schemas/responseitem.schema';
mongoose.connect(`mongodb://$user:$password@localhost/$db`);
// find
ResponseItem.find("adLogic.skipTo": "someValue").exec((err, item: IResponseItem) =>
// ...
);
// create
let responseItem: IResponseItem = new ResponseItem();
responseItem.question = "Will this work?";
responseItem.save((err, item: IResponseItem) =>
// ...
);
【讨论】:
仍然不理解反对意见 - 这个答案到底有什么问题?以上是关于用打字稿中的子文档描述猫鼬模型的主要内容,如果未能解决你的问题,请参考以下文章
如何在打字稿中的猫鼬userschema.methods中使用“this”