1

ドキュメントには、「または、マングースなどのカスタムスキーマ(ジャグリングではない)を定義する。カスタムスキーマの場合は、もちろんすべてのjugglingdb機能が無効になることに注意してください」と書かれています。

でも..

このスキーマは正確にどこに作成する必要がありますか?

4

2 に答える 2

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;

});
于 2012-04-11T02:04:17.823 に答える
1

上記の 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

于 2012-08-05T07:54:06.517 に答える