Node.js Expressフレームワークを試し、Railsconsole。NodeJSの世界にそのようなものはありますか?のように、コンソールを介してモデルと対話できるプラグインを探しています。
そうでない場合は、手動でオブジェクトを追加/削除したり、データのメソッドをテストしたりするなど、Node.jsモデルとデータをどのように操作できますか?
簡単です:プログラムに [〜#〜] repl [〜#〜] を追加します
次の行/コンポーネントを使用してjsファイル(例:console.js)を作成して、独自のREPL)を作成します。
var repl = require("repl");
var replServer = repl.start({});
を使用してreplをロードしますreplServer.context.<your_variable_names_here> = <your_variable_names_here>
_を使用してreplをキー変数にアタッチします。これにより、変数はREPL(ノードコンソール)で使用可能/使用可能になります。例:ノードアプリに次の行がある場合:var db = require('./models/db')
次の行をconsole.jsに追加します
_ var db = require('./models/db');
replServer.context.db = db;
_
node console.js
_を使用してコンソールを実行しますConsole.jsファイルは次のようになります。
_var repl = require("repl");
var epa = require("epa");
var db = require("db");
// connect to database
db.connect(epa.mongo, function(err){
if (err){ throw err; }
// open the repl session
var replServer = repl.start({});
// attach modules to the repl context
replServer.context.epa = epa;
replServer.context.db = db;
});
_
次のようにプロンプトをカスタマイズすることもできます。
_var replServer = repl.start({
Prompt: "Node Console > ",
});
_
完全なセットアップと詳細については、以下を確認してください: http://derickbailey.com/2014/07/02/build-your-own-app-specific-repl-for-your-nodejs-app/
オプションの完全なリストについては、プロンプト、色などのreplを渡すことができます: https://nodejs.org/api/repl.html#repl_repl_start_options
この情報をありがとう Derick Bailey 。
GavinBelsonには sequelize ORMで実行するための優れた推奨事項 (またはreplでpromise処理が必要なもの)があります。
現在、sequelizeも実行しており、ノードコンソールに_--experimental-repl-await
_フラグを追加しています。
毎回入力するのはたくさんあるので、私はhighly追加することをお勧めします:
_"console": "node --experimental-repl-await ./console.js"
_
_package.json
_のscripts
セクションに移動して、次のコマンドを実行できるようにします。
_npm run console
_
全部をタイプする必要はありません。
次に、次のように、エラーが発生することなくPromiseを処理できます。
const product = await Product.findOne({ where: { id: 1 });
私はノードの使用経験があまりありませんが、コマンドラインにnode
と入力して、ノードコンソールにアクセスできます。その後、モデルを手動で要求していました
これはあなたの質問に完全には答えないかもしれませんが、明確にするために、node.jsはRailsよりもはるかに低レベルであり、Railsのようなツールやデータモデルを規定していません。フレームワークというよりはプラットフォームです。
よりRailsのようなエクスペリエンスを探している場合は、 Meteor など、node.jsの上に構築されたより「フル機能の」フレームワークを検討することをお勧めします。
SQLデータベースを使用してこれを行う方法は次のとおりです。
インストールして使用する Sequelize 、これはRailsのアクティブレコードに対するノードのORM回答です。スキャフォールディングモデルと移行用のCLIもあります。
node --experimental-repl-await
> models = require('./models');
> User = models.User; //however you load the model in your actual app this may vary
> await User.findAll(); //use await, then any sequelize calls here
TLDR
これにより、Railsアクティブレコードの場合と同じように、すべてのモデルにアクセスできます。Sequelizeには少し慣れが必要ですが、多くの点で、アクティブレコードよりも柔軟性があります。同じ機能を持っています。
Sequelizeはpromiseを使用するため、これらをREPLで適切に実行するには、ノードの実行時に--experimental-repl-await
フラグを使用する必要があります。そうしないと、bluebirdpromiseエラーが発生する可能性があります。
Require( './ models')ステップを入力したくない場合は、console.js(ディレクトリのルートにあるREPL)のセットアップファイル)を使用してプリロードできます。これですが、REPLでこの1行を入力する方が簡単だと思います