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

yxyvkwin  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(105)

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

const ItemSchema = new mongoose.Schema({
  n: { type: String, required: true, unique: true, alias: 'name' },
});

module.exports = mongoose.model('Item', ItemSchema);

字符串
使用findOne:

Item.findOne()
  .exec(function(err, item){
    console.log(item);
  })


返回

{
  n: 'nameofitem'
}


但我需要

{
  name: 'nameofitem'
}


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

gopyfrb3

gopyfrb31#

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

架构

const { Schema } = require("mongoose").default;

const ItemSchema = new Schema(
  {
    n: {
      alias: "name",
      type: Schema.Types.String,
      required: true,
      unique: true,
    },
  },
  {
    toObject: { virtuals: true },
    toJSON: { virtuals: true },
  }
);

字符串

查询

const escapeRegExp = require("lodash/escapeRegExp");

async function findByName(data) {
  const query = { name: new RegExp(data, "i") };
  return Item.findOne(Item.translateAliases(query)).exec();
}

相关问题