ドキュメントには、「または、マングースなどのカスタムスキーマ(ジャグリングではない)を定義する。カスタムスキーマの場合は、もちろんすべてのjugglingdb機能が無効になることに注意してください」と書かれています。
でも..
このスキーマは正確にどこに作成する必要がありますか?
ドキュメントには、「または、マングースなどのカスタムスキーマ(ジャグリングではない)を定義する。カスタムスキーマの場合は、もちろんすべてのjugglingdb機能が無効になることに注意してください」と書かれています。
でも..
このスキーマは正確にどこに作成する必要がありますか?
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;
});
上記の customSchema の例を機能させる際に、同様の問題が発生していました。このちょっとしたヒントは、railwayjs customschemas を使用しようとしている他の人にとって、時間を大幅に節約できると思います。
console.log("custom schema initialized");
コードのブロック内に a を配置した後、console.log が起動していないことに気付きました...これは明らかに、ファイルcustomSchema(function() {...})
内の customSchema ブロックが呼び出されていないことを意味していました。db/schema.js
いろいろいじった後、config/database.json
ファイル内でドライバーを「メモリ」に設定する必要があることに気付きました(customSchemaを実行する環境に関係なく)。例えば driver: "mongoose" に設定した場合、railway はコードの 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
** もう 1 つの注意点 - 'jugglingdb' (鉄道に同梱されている ORM) を node_modules フォルダーから削除すると、customSchema は呼び出されません。これは、「jugglingdb」が railsjs フレームワークに緊密に統合されているためだと思います。その理由は、フレームワークの作成者が ruby-on-rails を模倣しようとしたためだと思います。これは、activeRecord と緊密に統合されていることがわかっています。
したがって、jugglingdb を使用しておらず、独自のカスタム スキーマを実行している場合でも (たとえば、mongoose またはその他の ORM を介して)、jugglingdb を削除しないでください。
これに関するバグを記録しました: https://github.com/1602/express-on-railway/issues/212