您好我是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
});
我理解当模式没有子文档时如何执行此操作。 我如何将其描述为typescipt类?
答案 0 :(得分:0)
例如,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) => {
// ...
});