0

FeathersJS アプリでデータベースにログインする方法が見つからないようです。サービスでデータベース情報とログイン情報を指定したいのですが、それが必要なだけです。myApp/config/default.json には、次の行があります。

"postgres": "postgres://postgress:@localhost:5432/feathers_db",

で:

http://docs.sequelizejs.com/en/latest/docs/getting-started/

上記のような文字列は次のようになります。

"postgres": "postgres://username:user_password@localhost:5432/feathers_db",

しかし、これはうまくいきません。また、すべての postgress トランザクションに対して 1 つの postgress データベースにロックされているため、Feathers のようなものでもありません。

services/index.js には、次の行があります。

const sequelize = new Sequelize(app.get('postgres'), {
  dialect: 'postgres',
  logging: false
});

上記の行を Sequelize がガイドで行うようにカスタマイズし、引数としてユーザー名とパスワードを指定することもできますが、なぜテンプレートがまだこのようにレイアウトされていないのでしょうか? 次の行もあります。

app.set('sequelize', sequelize);

Postgress データベースが複数ある場合はどうすればよいですか? 新しい Sequelize オブジェクトを作成し、次のようなことを行います。

app.set('sequelize_db1', sequelize_db1);
app.set('sequelize_db2', sequelize_db2);

または、サービスのモデルでユーザー情報を含むデータベース情報を指定しますか? 続編ではなく一般的な db 言語を使用している場合、Postgress のログイン プロセスはどのようになりますか?

4

1 に答える 1

2

だから一言で言えば「はい」。私の質問で私が尋ねたことはすべて「はい」でした。続編のドキュメントに示されているように、データベースに接続できます。config.json ファイルを構成して、ユーザー名とデータベース名を使用して「postgres」構成にすることもできます。新しい Sequelize オブジェクトを作成するときに、services/index.js ファイルにフル パスを配置することもできます。接続があることを確認する最善の方法は、新しい Sequelize オブジェクトを作成した後に次のコードを使用することです。

new_sequelize_object
    .authenticate()
    .then(function(err) {
        console.log('Connection to the DB has been established successfully.');
    })
    .catch(function (err) {
        console.log('Unable to connect to the database:', err);
    });

(から取得: http://docs.sequelizejs.com/en/latest/docs/getting-started/ )

複数の Sequelize オブジェクトを定義して、アプリに設定することもできます。次に、特定のサービスの index.js ファイルでモデルを定義するときに、新しいバインドされた名前を app.get('new_sequelize_object') に配置します。

以下は、2 つのデータベースが定義された services/index.js ファイルです。

'use strict';
const service1 = require('./service1');
const authentication = require('./authentication');
const user = require('./user');
const Sequelize = require('sequelize');
module.exports = function() {
  const app = this;

  const sequelize = new Sequelize('feathers_db1', 'u1', 'upw', {
host: 'localhost',
port: 5432,
    dialect: 'postgres',
  logging: false
  });

  const sequelize2 = new Sequelize('postgres://u1:upw@localhost:5432/feathers_db2', {
    dialect: 'postgres',
  logging: false
  });

  app.set('sequelize', sequelize);
  app.set('sequelize2', sequelize2);

sequelize
  .authenticate()
  .then(function(err) {
    console.log('Connection to sequelize has been established successfully.');
  })
  .catch(function (err) {
    console.log('Unable to connect to the database:', err);
  });

sequelize2
  .authenticate()
  .then(function(err) {
    console.log('Connection has been established to sequelize2 successfully.');
  })
  .catch(function (err) {
    console.log('Unable to connect to the database:', err);
  });


  app.configure(authentication);
  app.configure(user);
  app.configure(service1);
};

そして、これが servicesequelize2: 'use strict'; を使用する service1/index.js ファイルです。

const service = require('feathers-sequelize');
const service1 = require('./service1-model');
const hooks = require('./hooks');

module.exports = function(){
  const app = this;

  const options = {
    //Here is where one sets the name of the differeng sequelize objects 
    Model: service1(app.get('sequelize2')),
    paginate: {
      default: 5,
      max: 25
    }
  };

  // Initialize our service with any options it requires
  app.use('/service1', service(options));

  // Get our initialize service to that we can bind hooks
  const service1Service = app.service('/service1');


  // Set up our before hooks
  service1Service.before(hooks.before);
  // Set up our after hooks
  service1Service.after(hooks.after);
};
于 2016-11-30T21:11:18.333 に答える