簡體   English   中英

用打字稿中的子文檔描述貓鼬模型

[英]Describing a mongoose model with sub-document in 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
});

我知道當模式沒有子文檔時如何執行此操作。 我如何將其描述為typescipt類?

例如, 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) => {
    // ...
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM