2017-11-28 11 views
1

2つのスキーマが同じファイル内にある場合は、[AccountSchema]で参照できます。あなたはUserSchemaの "accounts"プロパティでそれを見ることができます。Mongoose:別のファイルにある入れ子になったスキーマをどのように参照できますか?

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 

それはスキーマを参照していますが、それを達成する方法については何も考えていませんでした。

+0

への最後の行を変更し、あなたの 'account.js'ファイルからAccountSchema)' –

+0

そして最終行を 'export default AccountSchema'とします –

+0

それはそれでした!そんなにPavan Voraありがとう! – jrantz

答えて

1

このライン `constのアカウント= mongoose.model( 'ユーザー' を削除してください

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

を提出あなたのaccount.jsから線の下に削除しようとすると、この

export default AccountSchema; 
関連する問題