如何在TypeScript界面​​中定义猫鼬_id?

时间:2019-02-18 08:52:33

标签: node.js typescript mongoose

我正在使用Mongoose和TypeScript,其接口为+ class + schema approach

存储_id字段的规范方法是什么?

我知道数据库将其存储为bson ObjectID。但是我看到一些示例使用string,另一些示例使用猫鼬的ObjectId,然后由于各种原因在它们之间进行转换-因此我不确定该使用哪个。

interface Animal {
  _id: ?type?;        // ?
  name: string;
}

建议使用

  • string
  • mongoose.Types.ObjectId
  • mongodb.ObjectID
  • bson.ObjectID

此外,假设使用objectid是正确的-我想避免依赖于接口文件中的猫鼬。改用bson包的ObjectID是安全/明智的-它们等效吗?

2 个答案:

答案 0 :(得分:0)

您可以使用mongoose.Document扩展界面。您的界面将会出现

interface Animal extends mongoose.Document { 
  name: string;
}

用法:

export let AnimalSchema = mongoose.model<Animal>('animal', schema, 'animals');
let animal = await AnimalSchema.find({_id: "id"}).exec();
// animal._id / animal.name

答案 1 :(得分:0)

你可以这样做

import { ObjectId } from 'mongoose';
interface Animal {
  _id: ObjectId       
  name: string
}