首页 > 解决方案 > 猫鼬如何在保存时返回特定字段

问题描述

当您使用 Mongoose 保存()一个新文档时。如何选择要返回的字段?

const productV2 = new ProductV2({ _id: req.query.po_product_id });

productV2.save(function (err, product) {
  if (err) {
    res.status(500).json({ error: err });
  } else {
    console.log('product', product);
    console.log(3);

    res.send(product);
  }
});

标签: mongoose

解决方案


干净的方法是在要返回特定字段的猫鼬实例上定义方法。

例如,如果您有这样的ProductV2架构:

const ProductV2 = new mongoose.Schema({
  name: String,
  price: Number,
  count: Number
})

// You can define an instance method on your schema

ProductV2.methods.getSpecificFields = function() {

  // For example you want to retrieve only name and price fields
  return {
    name: this.name,
    price: this.price
  } 
}

定义后,instance method您可以在代码中使用它:

const productV2 = new ProductV2({ _id: req.query.po_product_id });

productV2.save(function (err, product) {
  if (err) {
    res.status(500).json({ error: err });
  } else {
    console.log('product', product);
    console.log(3);

    res.send(product.getSpecificFields());
  }
});

要了解更多信息instance methodsstatics methods查看此信息


推荐阅读