2012-04-05 9 views
1

「カスタムスキーマ(ノンジャグリング)を定義する(例:mongoose)」というドキュメントは、単にカスタムスキーマの場合、すべてのjugglingdb機能が無効になることに注意してください。しかしRailwayJSを使用してカスタムスキーマを定義する場所

...まさにこのスキーマを作成する必要があります

答えて

1

私はまだdb/schema.js内に作成できると信じています。たとえば:

customSchema(function() { 

    var mongoose = require('mongoose'); 
    mongoose.connect('mongodb://localhost/test'); 

    var Schema = mongoose.Schema, ObjectId = Schema.ObjectId; 

    var BlogPost = new Schema({ 
     author : ObjectId 
     , title  : String 
     , body  : String 
     , date  : Date 
    }); 

    var Post = mongoose.model('BlogPost', BlogPost); 
    Post.modelName = 'BlogPost'; // this is for some features inside railway (helpers, etc) 

    module.exports['BlogPost'] = Post; 

}); 
+0

素晴らしい、ありがとう! エクスポートしたポストを自分のコントローラでどのように使うのですか? – Alex

+0

ハ!良い質問。私は同じ問題で立ち往生しています。私はUserスキーマを定義しましたが、コントローラーからアクセスする運がありませんでした(この人と同じ - https://github.com/bnoguchi/mongoose-auth/issues/71)。私は無数の時間をオンラインで検索しましたが、どこにも行きませんでした。 私はRailwayJS/JugglingDBがどこに向かうのか気に入っていますが、適切な文書で成熟したフレームワークになるにはまだまだ長い道のりがあります。私はそれをあきらめてRoRに戻った。とにかく、あなたはより良い運を願っています!あなたが解決策を見つけたら教えてください。 – jesal

+0

私はこのアプローチを私のアプリで使用しています。私は特別なことをすることなく、コントローラーでモデルを利用できます。上記の例では、「新しいBlogPost()」を実行するだけで済みます。 –

1

は私が仕事に上記customSchema例を取得して同様の問題を抱えていました。私は、この小さなヒントは、railwayjsのcustomschemasを使用しようとしている他の人のための巨大な時間節約者かもしれないと思う。

私は、コードのcustomSchema(function() {...})ブロック内console.log("custom schema initialized");を入れた後、私はにconsole.logは明らかに私のdb/schema.jsファイルにcustomSchemaブロックがさえ呼ばれていませんでしたことを意味している...発射されなかったことに気づきました。

私はあなたのconfig/database.jsonファイル内で、 "メモリ"(カスタムスケマを実行したい環境)に設定する必要があることに気付きました。たとえば、ドライバ: "mongoose"に設定した場合、鉄道はcustomSchemaコードブロックを実行しません。

あなたがcustomSchemaを実行したいのであれば要約すると、あなたのconfig/database.jsonファイルは次のようになりますことを確認してください。

{ 
"production": 
    { 
    "driver": "memory", 
    }, 
"development": 
    { 
    "driver": "memory" 
    }, 
"test": 
    { 
    "driver": "memory" 
    } 
} 

あなたのあなたはこのようなものがあればcustomSchemaは動作しません:

{ 
"production": 
    { 
    "driver": "mongoose", 
    "url": "mongodb://<user>:<pass>@localhost:<port>/<database>" 
    }, 
"development": 
    { 
    "driver": "mongoose", 
    "url": "mongodb://<user>:<pass>@localhost:<port>/<database>" 
    }, 
"test": 
    { 
    "driver": "memory" 
    } 
} 

少なくともこの記事の執筆時点で... railwayjsはまだ開発中ですので、事態が変わる可能性があります。私は使用していますrailwaysjs version 0.2.17-pre4

**あなたがnode_modulesフォルダから 'jugglingdb'(鉄道にパッケージされているORM)を削除すると、customSchemaは呼び出されません。私は、これは、 'jugglingdb'がrailwaysjsフレームワークに緊密に統合されているためだと考えています。その根拠は、フレームワークの作者が、activeRecordと密接に統合されていることを知っているRuby-on-Railsを模倣しようとしていたことです。

jugglingdbを使用していなくても、独自のカスタムスキーマ(例えばmongooseやその他のORM)を実行している場合でも、jugglingdbは削除しないでください。

私はこのためにバグを記録しました: https://github.com/1602/express-on-railway/issues/212

関連する問題