2

ウォーターラインを使用していない場合、コントローラーまたはその他のモデル ファイルで knex オブジェクトを取得する方法を教えてください。

例: 私の api/models/Users.js で

module.exports = {
     find : function(id){
         // my knex query
     },
     insert : function(data){
         // my knex query again   
     } 
}

したがって、私のコントローラーでは、次のようにします。

var result = Users.find(id);

また

var result = Users.insert({username : 'sailsjs'});

またはknexオブジェクトは、モデルファイル自体で使用されることなくグローバルに利用可能になります...そのため、コントローラー自体でknexクエリを実行できます

// ユーザーコントローラー/インデックス

index : function(req, res){
      // my knex query
}

ありがとうアリフ

4

2 に答える 2

3

//config/bootstrap.js

module.exports.bootstrap = function (cb) {

    var Knex  = require('knex');
    var knex = Knex.initialize({
        client : "mysql",
        connection : {
            host :'localhost',
            user :'root',
            database : 'sales_force',
            password : '*******'
        }
    });
    knex.instanceId = new Date().getTime();

    sails.config.knex = knex;

  // It's very important to trigger this callack method when you are finished 
  // with the bootstrap!  (otherwise your server will never lift, since it's waiting on the bootstrap)
  cb();
};

// コントローラーで

var knex = sails.config.knex

これは knex オブジェクトを返します。knex.instanceId は、同じ接続が全体で使用されていることを示しています。

これが問題を引き起こす可能性があるかどうかを提案してください。

ありがとうアリフ

于 2014-05-28T12:25:38.680 に答える
0

Sails Js (バージョン 1+ でテスト済み) で Knex Js をグローバルに使用するための最良のオプションは、次のように、config ディレクトリ内に knex.js という名前のファイルを作成することです。

/**
 * Knex Js, Alternate DB Adapter, In case needed, it is handy for doing migrations
 * (sails.config.knex)
 *
 *
 * For all available options, see:
 * http://knexjs.org/
 */

const developmentDBConfig = require('./datastores');
const stagingDBConfig = require('./env/staging');
const productionDBConfig = require('./env/production');


function getConnectionString() {
  let dbConnectionString = developmentDBConfig.datastores.default.url;

  if (process.env.NODE_ENV === 'staging') {
    dbConnectionString = stagingDBConfig.datastores.default.url;
  }

  if (process.env.NODE_ENV === 'production') {
    dbConnectionString = productionDBConfig.datastores.default.url;
  }

  return dbConnectionString;
}


module.exports.knex = require('knex')({
  client: 'postgresql',
  connection: getConnectionString()
});

これで、任意のファイル (ヘルパー/コントローラー/ビューなど) で、knex を次のように設定して使用できます。

// Now use this knex object for anything like:
let user = await sails.config.knex('user').select('*').first();

于 2020-03-05T12:23:47.487 に答える