【发布时间】:2017-04-26 07:19:46
【问题描述】:
我为我的猫鼬 TypeScript 模型使用了以下代码。
import mongoose = require('mongoose')
export interface PieceInterface extends mongoose.Document {
date: Date
summary: string
source: string
link: string
}
export const PieceSchema = new mongoose.Schema({
date: { type: Date, default: new Date(), required: true },
summary: { type: String, default: 'summary', required: true },
source: { type: String, default: 'source', required: true },
link: { type: String, default: '#', required: true }
})
export const Piece = mongoose.model<PieceInterface>('Piece', PieceSchema)
现在,当我使用 Piece.find({}).then(x => {...}) 时,x 就像预期的那样是 Promise<PieceInterface[]>。
但是,我无法获得
Piece.find({}).then(x => {
console.log(x[0].id)
})
要正确编译,它总是告诉我error TS2339: Property 'id' does not exist on type 'PieceInterface'。
因为,PieceInterface 扩展了 mongoose.Document,所以我看起来...
interface Document extends MongooseDocument, NodeJS.EventEmitter, ModelProperties
然后,
class MongooseDocument implements MongooseDocumentOptionals
最后是这个,
interface MongooseDocumentOptionals {
id?: string;
}
在我看来,它应该可以工作。我可以使用MongooseDocument 和ModelProperties 提供的变量,但不能使用MongooseDocumentOptionals。
我缺少什么吗?
参考:mongoose.d.ts 来自 GitHub
【问题讨论】:
标签: node.js typescript mongoose typescript-typings