在打字稿中用子文档描述猫鼬模型
Describing a mongoose model with sub-document in typescript
嗨,我是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
});
我知道当一个模式没有子文档时如何做到这一点。我怎么把它描述成一个typescript类呢?
以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) => {
// ...
});
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 为什么广播在文档中被描述为标志,而它实际上是一个对象
- nodejs:setImmediate 回调在 setTimeout(fn, 0) 之后执行,与 nodejs 文档描述
- 为什么在 React 中.js文档(“教程”部分)描述了运行服务器的必要性
- 描述类查找或创建mongo文档
- 如何使用简单模式描述这种复杂的文档结构
- 在打字稿中用子文档描述猫鼬模型