如何使用Mongoose对象进行面向对象的设计

时间:2017-02-21 16:10:47

标签: oop typescript mongoose

我是Javascript&的新手。打字稿,我以前在Java中做过面向对象的设计,我们在可能的情况下将行为放在与数据相同的类中。我不知道怎么用猫鼬做这件事。

作为一个例子,这是我在当前项目中找到的一些代码(本例简化):

// get production object from mongo
const production = await ProductionModel
  .findOne({_id: id}).exec();

// update the data
if (this.isNumber(unsold)) {
  production.unsold = unsold;
}

// do some data checking
if (production.unsold < 0) {
  throw new Error('Unsold must be >= 0');
}
if (production.productions.length < production.unsold + production.mistakes) {
  throw new Error('INCOHERENCE_BETWEEN_PRODUCTION_AND_UNSOLD');
}

// save the production object
await production.save();

在Java中,我会使用setter来验证数据,以便在一个地方(在Production对象中)完成,并且可以被所有人重复使用。 Mongoose有可能吗?例如,我想为错误创建一个setter。在这种方法中,我要验证它&gt; 0并且错误+未售出的总和不小于制作。

我可以定义,但是我有一个接口和一个模式,setter在哪里?我似乎无法将其添加到界面中,因此我必须将其作为一个类(为什么每个人都使用mongoose而不是类的接口?)。如果我将它添加到模式中,它将在模型中可用,但在我的大多数代码中,我尝试避免使用模型并坚持我的界面。现在我很困惑。 ;)

这在类型打字稿世界中是否常见?我已经搜索了这个,但是我还没有找到解决方案,所以我觉得这不是打字稿的方式。

由于

0 个答案:

没有答案