質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

1745閲覧

Node + Express + MongodbにおけるHTMLタグ付きデータの格納について

Shun0722

総合スコア16

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2018/12/03 13:19

編集2018/12/03 15:03

Node + Express + MongodbでWebアプリケーションを作成しております。

CKEditorのようなリッチテキストエディタで、太字や箇条書きなどの装飾を施した文章をデータベースに保存して別の場所に表示させたいのですが、表示させると 

<p> <li> あいうえお </li> </p>

のようにHTMLのタグがそのままテキストデータとして表示されてしまい、装飾がうまく反映されません。

どのようにすれば、HTMLタグをテキストではなく装飾としてWebページに表示することができるようになるのでしょうか?

初歩的な質問でお恥ずかしいのですが、教えていただけると大変助かります。

//下記はコードの補足です。フルーツというコレクションにデスクリプションという記載を追加するような動作を想定しております。

スキーマの設定

JavaScript

1var FruitSchema = new mongoose.Schema({ 2 description: String, 3});

ROUTING (Create) 設定

JavaScript

1app.post("/fruits", function(req,res){ 2 var name = req.body.description; 3 var newFruit = {description: description}; 4 Fruit.create(newFruit, function(err, newlyCreated){ 5 if(err){ 6 console.log(err); 7 } else{ 8 res.redirect("/fruits") 9 } 10 }); 11});

ROUTING (Show) 設定

JavaScript

1app.get("/fruits/:id", function(req,res){ 2 Fruit.findById(req.params.id).populate("shops").exec(function(err,foundFruit){ 3 if(err){ 4 console.log(err); 5 }else{ 6 console.log(foundFruit); 7 res.render("fruits/show", {fruit: foundFruit}); 8 } 9 }); 10}); 11

入力ページ

Node

1 <div> 2 <textarea name="description"></textarea> 3 <script> 4 CKEDITOR.replace( 'description' ); 5 </script> 6</div>

表示ページ

Node

1 <div> 2 <b><h4>説明</h4></b> 3 <p><%= fruit.description %></p> 4 </div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/12/03 13:29 編集

おそらくプログラムがそのような動作をするように書かれているのだと思いますが、どのようなコードを書いているのでしょうか?質問を編集して、プログラムのコードを追記していただけないでしょうか。
Shun0722

2018/12/03 15:04

早速ありがとうございます。コードを追記してみました。
guest

回答1

0

ベストアンサー

HTML

1 <div> 2 <b><h4>説明</h4></b> 3 <p><%= fruit.description %></p> 4 </div>

これはHTMLじゃありませんよ。
HTMLというのはHyperText Markup Languageという文書のフォーマットで、
HTMLの仕様には<%= value %>という構文はありません。

もしこれをChrome等のブラウザで読み込めば<%= value %>の箇所がそのまま文字列として表示されるはずです。
解析するとHTMLが払い出されるテンプレート言語EJSの話ではありませんか?

以下、EJS決め打ちで解説していきます。


テンプレートエンジンEJSで使える便利な構文まとめ

質問は上記記事の<%- %>を読めば解決出来るでしょう。

ejs

1<% var para = '<p>Hello EJS!</p>'; %> 2<div><%= para %></div> 3<div><%- para %></div>

HTML

1<div>&lt;p&gt;Hello EJS!&lt;/p&gt;</div> 2<div><p>Hello EJS!</p></div>

投稿2018/12/04 02:49

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shun0722

2018/12/04 13:06

ご回答ありがとうございます。質問の記載が不適切でごめんなさい。 無事解決いたしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問