是否存在 Mongoose 模型的逆模型,

yxyvkwin  于 2024-01-08  发布在  Go
关注(0)|答案(1)|浏览(138)

有没有一种方法可以从model.find()返回一个对象,其中字段被Map到它们的别名值。
即模式:

  1. const ItemSchema = new mongoose.Schema({
  2. n: { type: String, required: true, unique: true, alias: 'name' },
  3. });
  4. module.exports = mongoose.model('Item', ItemSchema);

字符串
使用findOne:

  1. Item.findOne()
  2. .exec(function(err, item){
  3. console.log(item);
  4. })


返回

  1. {
  2. n: 'nameofitem'
  3. }


但我需要

  1. {
  2. name: 'nameofitem'
  3. }


在我的情况下,聚合项目将无法工作,因为我动态选择模型

gopyfrb3

gopyfrb31#

关于Klemens Zleptnig's注解,您还可以在mongoose.Schema级别设置选项,以便在每次执行查询时获取数据的翻译版本。

架构

  1. const { Schema } = require("mongoose").default;
  2. const ItemSchema = new Schema(
  3. {
  4. n: {
  5. alias: "name",
  6. type: Schema.Types.String,
  7. required: true,
  8. unique: true,
  9. },
  10. },
  11. {
  12. toObject: { virtuals: true },
  13. toJSON: { virtuals: true },
  14. }
  15. );

字符串

查询

  1. const escapeRegExp = require("lodash/escapeRegExp");
  2. async function findByName(data) {
  3. const query = { name: new RegExp(data, "i") };
  4. return Item.findOne(Item.translateAliases(query)).exec();
  5. }

展开查看全部

相关问题