在mongoose中的schema上不存在property pre

时间:2018-05-21 04:14:49

标签: node.js mongoose

我试图通过pre钩子检测文档中的更改,但是它打字错误给了我这个属性不存在的错误。

遵循结构化风格,而不是OOP

// category.schema.ts
const categorySchema = new Schema({
    category_id: { type: Number, required: true, unique: true },
    name: { type: String, required: true, unique: true },
    icon_url: { type: String, required: true },
    items_quantity: { type: Number, required: true },
    items: [
      item_id: { type: Number, required: true, unique: true },
      item_name: { type: String, required: true }
    ]

})

const Category: Model<Category> = model<Category>('Category', categorySchema);

export default Category;

现在我想检查删除子文档时的文档更改。

import CategorySchema from "../schemas/category.schema"; // schema path

router.delete('/:category/:item', async (req, res) => { // removes an item

   let itemsQuantity: number;
   let category = await CategorySchema.findOneAndUpdate(
       { category_id: req.params.category },
       { $pull: { items: { item_id: req.params.item } } },
       { new: true });

   // pre does not exist
   CategorySchema.pre('save', function(next) {
       if(category.isModified()) {
           log('changed');
       } else {
         log('not changed')
       }
   })

   const data = await category.save();

   res.status(200).send(req.params.item);
})

如何获取或启用此hook,任何建议?

0 个答案:

没有答案