【问题标题】:extends schema in mongoose and nodejs在 mongoose 和 nodejs 中扩展模式
【发布时间】:2020-07-03 19:43:36
【问题描述】:

我有一些领域,它在我所有的模型中重复出现。

我在我的模型的其他文件中创建了一个BaseSchema

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
var util = require('util');

function BaseSchema() {
    Schema.apply(this, arguments);

  this.add({
    owner: { type:String },
    updateDate: { type: String },
    updateBy: { type: String },
    deleteDate: { type: String },
    deleteby: { type: String },
    createDate: { type: String },
    createBy: { type: String },
  });
}

util.inherits(BaseSchema, Schema);

我在RoleSchema 中使用这个BaseSchema

const mongoose = require("mongoose");
const schema = mongoose.Schema;
const BaseSchema = require("./baseEntity");

const RoleSchema = new BaseSchema.add({
  name: { type: String, require: true },
  description: { type: String },
  scurityStamp: { type: String, require: true },
});

RoleSchema.pre('save',()=>{
    scurityStamp='kianoush'
})
mongoose.model('Roles',RoleSchema);

但是当我运行项目时,它会显示这个错误:

 const RoleSchema = new BaseSchema.add({
                   ^

TypeError: BaseSchema.add is not a constructor
    at Object.<anonymous> (F:\Projects\Nodejs\SalesSignal\src\entity\role.js:5:20)

prboem 是什么?我该如何解决这个问题???

【问题讨论】:

    标签: javascript node.js mongoose mongoose-schema


    【解决方案1】:

    我认为这可以简化,因为您基本上是在尝试扩展您的 BaseSchema

    import { model, Schema } from 'mongoose';
    
    const BaseSchema = new Schema({
        owner: { type:String },
        updateDate: { type: String },
        updateBy: { type: String },
        deleteDate: { type: String },
        deleteby: { type: String },
        createDate: { type: String },
        createBy: { type: String },
    });
    
    const RoleSchema = new Schema({
      ...BaseSchema.obj,
      name: { type: String, required: true },
      description: { type: String },
      scurityStamp: { type: String, required: true },
    });
    
    // test
    const RoleModel = mongoose.model('roles', RoleSchema);
    const role = new RoleModel({ name: 'test', scurityStamp: 'test', owner: 'someOwner', createDate: new Date() });
    await role.save(); 
    

    【讨论】:

    • 对我来说不是她的错误,但没有在集合中添加 BaseSchema 字段
    • 这是 nodejs import { model, Schema } from 'mongoose'; 这个命令不适用于 nodejs
    • 改成const mongoose = require('mongoose'); const Schema = mongoose.Schema;
    • 这个错误 const RoleSchema = new BaseSchema.add({ ^ TypeError: BaseSchema.add is not a constructor at Object. (F:\Projects\Nodejs\SalesSignal\src\entity\role .js:5:20)
    • 是的,这当然是错误的。请使用我给你的确切代码。 new BaseSchema.add 是错误的,因为它不是你调用的构造函数。
    猜你喜欢
    • 2018-06-05
    • 2016-11-19
    • 2023-03-12
    • 2012-12-25
    • 1970-01-01
    • 2019-05-10
    • 2019-07-18
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多