如何获取通过mongoose.model创建的模型类的名称?
获取Mongoose模型的类名称解决方案
Mongoose通过mongoose.model()创建的模型,其构造函数的name属性会被统一设置为model,而你传入的自定义模型名称实际上被存储在模型的modelName属性中——这个属性在模型构造函数本身和模型实例上都能访问到。
修改你的代码,通过Model.modelName或者instance.constructor.modelName就能拿到预期的Genre:
const mongoose = require("mongoose"); const genreSchema = mongoose.Schema({ name: String }); const Genre = mongoose.model("Genre", genreSchema); async function create(Model, modelInfo) { const instance = new Model(modelInfo); // Await some asynchronous work console.log(Model.modelName, "created: ", instance); // 也可以用实例的构造器获取: // console.log(instance.constructor.modelName, "created: ", instance); } create(Genre, { name: "Thriller" });
执行后会输出Genre created: ...,完全符合预期。
另外补充:Genre.modelName直接返回的就是你调用mongoose.model()时传入的第一个参数,这是Mongoose为每个模型内置的专属属性,专门用于存储用户定义的模型标识名称。
内容的提问来源于stack exchange,提问作者eric_b_231
相关产品推荐
相关产品推荐

