2017-11-10 8 views
0

私はNodejs、expressjs、sqlite3を使用しています。私はexpressjsを使用してデータベースとルートからの私のデータを取得するために管理しているfrontend expressjsにデータを送信

、これは今、私が送って/私は、フロントエンドで抽出したデータを使用するすべての

server.jsという名前のjsファイルです。

グローバル変数を使用しようとしましたが、そのグローバル変数を他のjsファイルで使用しようとしましたが、動作しませんでした。いくつかの調査の後で、私はAJAXがほとんどの時間を参照しています。バックエンドからフロントエンドにデータを送信するためにAJAXを使用する必要がありますか?

アイデアは、ユーザーが選択した製品に基づいてフロントエンドを更新することです。私はサーバーjsで製品データを取得しますが、フロントエンドに送信してテーブルを埋める方法と、データベースのデータに基づいて製品の名前を変更する方法はわかりません。

また、グローバル変数で自分のデータを保存/使用することを続行する必要がありますか?おかげさまで

答えて

0

RESTful APIを作成して、必要な処理を行う必要があります。つまり、AJAXを使用しなければならず、グローバル変数で作業することはできません。

+0

感謝をスキップすることができます(など、角度、VUEを反応させる)、クライアント側のJSライブラリを使用している場合。 AJAXを使ってページをリダイレクトする方法はありますか?例えば。テーブル内の要素をクリックすると、別のビューに移動し、その特定の項目のデータに基づいて要素/属性値を変更します(これは私の場合の製品です)。 – asker

+0

はい、サイト 'www.yoursite.com'に'/products'というページがあり、このページから '/ product/id_product'ページにリダイレクトすることができます。ここで' id_product'はプライマリキーです製品のsqlite3テーブルで使用します。 –

0

AJAXは、完全なページの再読み込みをトリガーすることなく、バックエンドからデータを要求する優れた方法です。しかし、それはあなたのように聞こえない複雑さのレイヤーを追加します。エクスプレスを使用しているので、templating engineにアクセスできます。

エクスプレス応答オブジェクトには、使用するテンプレートとテンプレートに送信するデータを指定するrenderメソッドがあります。いくつかの疑似コード:

// server.js 
app.get('someroute',(req,res,next)=>{ 
    //get data from DB, returns promise 
    return db.getData().then((data)=>{ 
     return res.render('myTableTemplate',data); 
    }); 
}); 

テンプレートファイルでは、JSONデータをテーブルに適切に入力します。

あなたは答えをres.render(...)と単にres.json(data)

+0

私は私の意見にhtmlを使用しています。自分のデータにマップする要素/属性を選択するにはどうすればよいですか?また、特定のアイテムの詳細を表示するためにビューを変更するにはどうすればよいですか?例えば。テーブル内の要素をクリックすると、別のビューに移動し、その特定の項目のデータに基づいて要素/属性値を変更します(これは私の場合の製品です)。 – asker

+0

私が持っているものは次のとおりです。 app.render( "/productDetail.html",rows、function(err、html){ console.log(rows); res.sendFile(path.join(__ dirname + '/ projectDetail。 html ')); }); rows.productNameにマップ製品名を使用したいとします。どのようにしてそれを行うことができるので、ホームページでその製品が選択されたときに正しい製品名が表示されます。 //document.getElementById('pname ')= rows.productName;例: – asker

+0

データをテーブルにマップする構文は、使用しているテンプレートエンジンに大きく依存しています。それはあなたのルートの前に定義する必要があります。 'app.set( 'engine'、 'ejs')'のようなものです。 render関数のコールバックではres.sendFileを実行しません。 Renderはデータに基づいてHTMLを作成し、クライアントに送信します。 – Splitty

関連する問題