将猫鼬模式导入另一个模式文件会使导入的模式未定义

Pha*_*a0h 1 javascript mongoose mongodb node.js mongoose-schema

文件结构:

?   resolvers.js
?   schema.js
?
????schemas
        matchesSchema.js
        playersSchema.js
        teamsSchema.js
        tournamentsSchema.js
Run Code Online (Sandbox Code Playgroud)

所以我有 4 个模式,我想在我所有的模式中使用其他模式,但是当我导入它时,我收到一个错误:

C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:425
      throw new TypeError('Invalid value for schema Array path `' + prefix + key + '`');
      ^

TypeError: Invalid value for schema Array path `matches`
    at Schema.add (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:425:13)
    at new Schema (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:99:10)
    at Object.<anonymous> (C:/Users/phara0h/Dropbox/esports-scores.com/nodeTest/src/schemas/tournamentsSchema.js:8:34)
    at Module._compile (module.js:570:32)
    at loader (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (C:/Users/phara0h/Dropbox/esports-scores.com/nodeTest/src/schemas/teamsSchema.js:5:1)
    at Module._compile (module.js:570:32)
    at loader (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:487:32)
Run Code Online (Sandbox Code Playgroud)

当我console.log导入变量时,它们是未定义的。

playerSchema.js:

?   resolvers.js
?   schema.js
?
????schemas
        matchesSchema.js
        playersSchema.js
        teamsSchema.js
        tournamentsSchema.js
Run Code Online (Sandbox Code Playgroud)

匹配Schema.js:

C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:425
      throw new TypeError('Invalid value for schema Array path `' + prefix + key + '`');
      ^

TypeError: Invalid value for schema Array path `matches`
    at Schema.add (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:425:13)
    at new Schema (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\mongoose\lib\schema.js:99:10)
    at Object.<anonymous> (C:/Users/phara0h/Dropbox/esports-scores.com/nodeTest/src/schemas/tournamentsSchema.js:8:34)
    at Module._compile (module.js:570:32)
    at loader (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (C:/Users/phara0h/Dropbox/esports-scores.com/nodeTest/src/schemas/teamsSchema.js:5:1)
    at Module._compile (module.js:570:32)
    at loader (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (C:\Users\phara0h\Dropbox\esports-scores.com\nodeTest\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:487:32)
Run Code Online (Sandbox Code Playgroud)

团队架构.js

import mongoose, { Schema } from 'mongoose';
import timestamps from 'mongoose-timestamp';
import { MatchesSchema } from './matchesSchema';
import { TeamsSchema } from './teamsSchema';
import { TournamentsSchema } from './tournamentsSchema';

// Mongoose Schema definition
export const PlayersSchema = new Schema({
    active: Boolean,
    captain: {type: Boolean, default: false},
    activeTeam: String,
    birthDate: Date,
    country: String,
    firstName: String,
    lastName: String,
    nickName: String,
    matches: [MatchesSchema],
    picture: String,
    position: String,
    steamId: String,
    twitch: String,
    teams: [TeamsSchema],
    tournaments: [TournamentsSchema]
});
PlayersSchema.plugin(timestamps);
PlayersSchema.index({ activeTeam: 'text', country: 'text', firstName:     'text', lastName: 'text', nickName: 'text' });
export const PlayerDB = mongoose.model( 'Players', PlayersSchema );
Run Code Online (Sandbox Code Playgroud)

锦标赛Schema.js

import mongoose, { Schema } from 'mongoose';
import timestamps from 'mongoose-timestamp';
import { PlayersSchema } from './playersSchema';
import { TeamsSchema } from './teamsSchema';
import { TournamentsSchema } from './tournamentsSchema';

// Mongoose Schema definition
export const MatchesSchema = new Schema({
    dateUTC: String,
    ended: Boolean,
    lenght: String,
    matchDetails: Schema.Types.Mixed,
    matchId: Number,
    player: [PlayersSchema],
    teams: [TeamsSchema],
    tournament: {type: String, ref: TournamentsSchema },
    winner: String
});
MatchesSchema.plugin(timestamps);

export const MatchesDB = mongoose.model( 'Matches', MatchesSchema );
Run Code Online (Sandbox Code Playgroud)

是的,我可以将它们全部放在一个文件中,但是由于它们都相互使用,但是在页面上较低的方案不能包含在上述方案中。

感谢先进

Wet*_*émi 5

一切都很好,但似乎我们需要明确要求对象的模式部分。

而不是player: [PlayersSchema]

尝试 player: [PlayersSchema.schema]