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

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

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

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

JavaScript

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

Q&A

解決済

2回答

10740閲覧

[JavaScript] TypeError: Cannot set property '~~~' of undefined とは

hiro_ike

総合スコア48

MongoDB

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

JavaScript

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

0グッド

0クリップ

投稿2021/07/06 07:38

JavaScript 初心者です。

下記エラーが表示されていますが、
エラー対応をググりましたが、初心者なためどこが根本的原因なのか分かりませんでした。
確認すべき箇所をご指摘頂けますと幸いです。

[出力されているエラー]
throw er; // Unhandled 'error' event
TypeError: Cannot set property 'products' of undefined
エラーの該当行

res.locals.data.products = foundProducts

TypeErrorとなっているファイル↓

JavaScript

1const Product = require('../models/product') 2const dataController = { 3 index(req, res, next){ 4 Product.find({}, (err, foundProducts) => { 5 if(err){ 6 res.status(404).send({ 7 msg: err.message 8 }) 9 } else { 10 res.locals.data.products = foundProducts 11 next() 12 } 13 }) 14 }, 15 show(req, res, next){ 16 Product.findById(req.params.id, (err, foundProduct) => { 17 if(err){ 18 res.status(404).send({ 19 msg: err.message 20 }) 21 } else { 22 res.locals.data.product = foundProduct; 23 next(); 24 } 25 }) 26 }, 27 create(req, res, next){ 28 Product.create(req.body, (err, createdProduct) => { 29 if(err){ 30 res.status(404).send({ 31 msg: err.message 32 }) 33 } else { 34 res.locals.data.product = createdProduct; 35 next(); 36 } 37 }) 38 }, 39 buy(req, res, next){ 40 Product.findByIdAndUpdate(req.params.id, { $inc: {qty: -1} }, (err, updatedQty)=>{ 41 if(err){ 42 res.status(404).send({ 43 msg: err.message 44 }) 45 } else { 46 res.locals.data.qty = updatedQty; 47 next() 48 } 49 }) 50 }, 51 destroy(req, res, next){ 52 Product.findByIdAndDelete(req.params.id, (err, deletedProduct) => { 53 if(err){ 54 res.status(404).send({ 55 msg: err.message 56 }) 57 } else { 58 res.locals.data.product = deletedProduct; 59 next(); 60 } 61 }) 62 }, 63 update(req, res, next){ 64 Product.findByIdAndUpdate(req.params.id, req.body, { new: true}, (err, updateProduct) => { 65 if(err){ 66 res.status(404).send({ 67 msg: err.message 68 }) 69 } else { 70 res.locals.data.product = updateProduct; 71 next(); 72 } 73 }) 74 } 75} 76 77module.exports = dataController; 78 79

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

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

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

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

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

guest

回答2

0

ベストアンサー

res.locals.data.products = foundProducts

res.locals.dataundefinedであるということです。
元をたどってデバッグしてください。

投稿2021/07/06 07:54

itagagaki

総合スコア8402

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

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

hiro_ike

2021/07/06 08:24

server.js に下記がありませんでした。ありがとうございました!! app.use((req, res, next) => { res.locals.data = {} next() });
guest

0

'products'というプロパティは存在しない、とおっしゃってます
それがきちんとあるのか、スペル間違ってないか確認してみては

投稿2021/07/06 07:50

y_waiwai

総合スコア88042

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

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

itagagaki

2021/07/06 07:58

ちょっと違います。 おっしゃっているのは、undefinedのproductsプロパティをセットできない、です。 なのでproductsプロパティが存在しないのが問題なのではなくて、そもそもres.locals.dataがundefinedなのが問題なのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問