【问题标题】:Mongoose: How can I reference a nested schema that is in a separate file?Mongoose:如何引用单独文件中的嵌套模式?
【发布时间】:2018-05-11 09:12:28
【问题描述】:

如果两个架构在同一个文件中,您可以使用:[AccountSchema] 来引用它。您可以在 UserSchema 的“帐户”属性中看到这一点。

import express from 'express'
import mongoose from 'mongoose'
const Schema = mongoose.Schema
import Account from './accounts'


let AccountSchema = new Schema ({
  accountName: {
    type: String,
    trim: true,
    required: true,
    unique: [true, "You already have an account with this name."],
  },
  percent: {
    type: Number,
    min: 1,
    max: 100,
    required: true
  },
  isGoal: {
    type: Boolean,
    default: false
  },
  accountHistory: {
    type: Array
  }
})


let UserSchema = new Schema ({
  username: {
    type: String,
    unique: [true, "This username is taken."],
    trim: true,
  },
  email: {
    type: String,
    unique: [true, "This email is already being used."],
    trim: true
  },
  password: {
    type: String,
    trim: true
  },
  infusions: {
    type: Array,
    timestamps: true
  },
  accounts: {
    type: [AccountSchema],
    count: {
      type: Number,
      default: 8
    }
  },
  secretToken: {
    type: String
  },
  active: {
    type: Boolean,
    default: false
  },
  isAdmin: {
    type: Boolean,
    default: false
  }
}, {
  timestamps: true,
})

const User = mongoose.model('users', UserSchema)
export default User

但是,如果模式位于不同的文件中,您会怎么做?你怎么能引用它们?我试过这样,但没有用:

// account.js
import express from 'express'
import mongoose from 'mongoose'
const Schema = mongoose.Schema

let AccountSchema = new Schema ({
  accountName: {
    type: String,
    trim: true,
    required: true,
    unique: [true, "You already have an account with this name."],
  },
  percent: {
    type: Number,
    min: 1,
    max: 100,
    required: true
  },
  isGoal: {
    type: Boolean,
    default: false
  },
  accountHistory: {
    type: Array
  }
})

const Account = mongoose.model('users', AccountSchema)
export default Account

并且用户模式在一个单独的文件中:

  // users.js
  import express from 'express'
  import mongoose from 'mongoose'
  const Schema = mongoose.Schema
  import Account from './accounts'

  let UserSchema = new Schema ({
    username: {
      type: String,
      unique: [true, "This username is taken."],
      trim: true,
    },
    email: {
      type: String,
      unique: [true, "This email is already being used."],
      trim: true
    },
    password: {
      type: String,
      trim: true
    },
    infusions: {
      type: Array,
      timestamps: true
    },
    accounts: {
      type: [Account],
      count: {
        type: Number,
        default: 8
      }
    },
    secretToken: {
      type: String
    },
    active: {
      type: Boolean,
      default: false
    },
    isAdmin: {
      type: Boolean,
      default: false
    }
  }, {
    timestamps: true,
  })

  const User = mongoose.model('users', UserSchema)
  export default User

在一篇文章中,我被告知要导出架构,而不是引用架构的模型,但他们没有给出如何实现这一点的任何想法。

【问题讨论】:

  • 尝试从您的 account.js 文件中删除这一行 const Account = mongoose.model('users', AccountSchema)
  • 你也把最后一行写成export default AccountSchema
  • 就是这样!非常感谢帕万沃拉!

标签: mongodb express mongoose schema


【解决方案1】:

尝试从您的 account.js 文件中删除以下行

const Account = mongoose.model('users', AccountSchema);

把最后一行改成这样

export default AccountSchema;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2017-07-06
    • 2013-11-06
    • 2021-07-20
    • 1970-01-01
    • 2017-06-17
    • 2014-03-02
    • 1970-01-01
    相关资源
    最近更新 更多