2017-04-19 10 views
1

ファイル構造を作る:輸入マングーススキーマは、インポートされたスキーマ未定義

│ resolvers.js 
│ schema.js 
│ 
└───schemas 
     matchesSchema.js 
     playersSchema.js 
     teamsSchema.js 
     tournamentsSchema.js 

だから私は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) 

私がconsole.logをインポートすると、それらは未定義です。

playersSchema.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);

matchesSchema.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);

teamsSchema.js

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

 
// Mongoose Schema definition 
 
export const TeamsSchema = new Schema({ 
 
    country: String, 
 
    teamTag: String, 
 
    logo: String, 
 
    matches: [MatchesSchema], 
 
    name: String, 
 
    players: [PlayersSchema], 
 
    steamId: String, 
 
    url: String, 
 
    tournaments: [TournamentsSchema] 
 
}); 
 
TeamsSchema.plugin(timestamps); 
 
TeamsSchema.index({ teamTag: 'text', country: 'text', name: 'text' }); 
 
export const TeamsDB = mongoose.model('Teams', TeamsSchema);

tournamentsSchema.js

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

 
// Mongoose Schema definition 
 
export const TournamentsSchema = new Schema({ 
 
    description: String, 
 
    endDate: String, 
 
    itemdef: Number, 
 
    leagueid: Number, 
 
    matches: [MatchesSchema], //<--- this causes the error 
 
    name: String, 
 
    organizer: String, 
 
    production: String, 
 
    prizepool: String, 
 
    players: [PlayersSchema], 
 
    results: String, 
 
    startDate: String, 
 
    teams: [TeamsSchema], 
 
    tournamentUrl: String 
 
}); 
 
TournamentsSchema.plugin(timestamps); 
 
TournamentsSchema.index({ description: 'text', name: 'text', organizer : 'text' }); 
 
export const TournamentsDB = mongoose.model('Tournaments', TournamentsSchema);

はい、私は一つのファイルにそれらのすべてを置くことができますが、それらはすべてのページにお互いが、を使用するのでより低いですスキームは上記のものに含めることはできません。

先進

+0

間違ったディレクトリ 'nodeTest \ node_modules \ mongoose \ lib \ schema.js'を調べて、エラーの1行目を確認してください。私はあなたのスキーマが別のディレクトリにあると確信しています... '。/ playersSchema'から正しいディレクトリ/パスを指すようにインポート行を変更する – Searching

+0

@Searchingはファイル構造を追加しました。同じディレクトリにある – Phara0h

+0

import文は、 '/ schemas/playerschema'などのようにする必要があります。 – Searching

答えて

1

を試してみてください: 私は他のスキーマのすべての介在物を除去され、最終的にそれら

Schema.Types.Mixed 

作ら私はgraphQLサーバを作ってから、これを行う必要はありませんでした。そして、GraphqlがMongooseで定義することなく、私が望むように出力/入力を処理することに気付きました。

0

中ありがとうすべては良いですが、我々が明示的にオブジェクトのスキーマの一部を依頼する必要があると思われます。

代わりのplayer: [PlayersSchema]

周りに多くの作業が何であるかを私のソリューションplayer: [PlayersSchema.schema]

+0

それはそうではありません。スキーマの定義時にスキーマが定義されていないという問題です。しかし、私は別の方法でそれを解決した。 – Phara0h

関連する問題