sprint cmarket-cla注文履歴エラーの原因は1文字の違いしかありません!


[OK]ボタンの前に作成されたコンテンツ


ここからコピーしてください-----------------------
OS:例)MacOS
ノードバージョン(node-v):v 15.14.0
現在どのようなスプレーが行われていますか.どんな問題がありますか.
第3部:リレーショナルデータベースim-sprint-camarket
サーバ/モデル/インデックス.jsコードを記述します.
テストに合格した後、
クライアントを実行して、すべてが順調であることを確認します.
いくつかの商品を詰めた後、주문하기 버튼을 누르거나 주문 내역을 클릭해보면次の写真のようなエラーが発生します.

できない部分を解決するために具体的にどのような努力をしましたか?
  • 1まずスライスします.定義されていないので、
    私のサーバーは間違った形式でデータを送信すると思いますので、ブラウザのlocalhost:4000/users/1/ordersのデータを自分でチェックします.
  • 2サーバーを掛けて、再接続してみたり、mysqlで表の記録がよく撮れているかどうかを直接チェックしてみたり(claから注文した場所が記録されているようです)
  • -3最後に,参照コードと比較し,参照コードに類似するコードを可能な限り修正した.
    実際には、私のコードを完全に注釈し、参照コードを貼り付けて実行すると、注文がよく記録されます.😅😭
    (だから私は2つのウィンドウを置いて、リファレンスコードと私のコードをブラウズして、リファレンスと他の部分を修正しました.
    ただし、まだ私のコードで実行している場合は、同じエラーが発生します.)
    どんな面で理解していませんか.
    どこが違うのか、そんな間違いが出てくる.とても好奇心があります
    エラーコードを貼り付けてください.
    誤出力の箇所は、原因と思われる部分を10行以内に貼り付けてください.(わからない場合は、あなたが間違っていると思っているところに入れてください)
    //models/index.js 파일입니다
    const db = require("../db");
    
    module.exports = {
      orders: {
        get: (userId, callback) => {
          // TODO: 해당 유저가 작성한 모든 주문을 가져오는 함수를 작성하세요
          // users/:userId/orders GET요청
          // 해당 유저아이디의 모든 주문을 db에서 가져와서, callback (result) 해줌
          // id, image, name, order_quantity, price, total_price 컬럼 순서
    
          const query = `SELECT o.id, o.created_At, o.total_price, i.name, i.price, i.image, oi.order_quantity  
          FROM orders AS o
          INNER JOIN order_items AS oi ON o.id = oi.order_id
          INNER JOIN items As i ON oi.item_id = i.id 
          WHERE (o.user_id = ?)`;
          const params = [userId];
          db.query(query, params, (err, result) => {
            //console.log(result)
            callback(err, result);
          });
        },
        post: (userId, orders, totalPrice, callback) => {
          // TODO: 해당 유저의 주문 요청을 데이터베이스에 생성하는 함수를 작성하세요
          // users/:userID/orders/new -> 클라이언트 post 요청
          // orders 테이블을 채워줌 -> 생성된 orders.id 이용해서, 다시 쿼리로 order_items.order_id 를 앞에 id 값 이용해서 채워줌
    
          const firstQuery = `INSERT INTO orders (user_id, total_price) VALUES (?, ?)`;
          const params = [userId, totalPrice];
    
          db.query(firstQuery, params, (err, result) => {
            if (result) {
              const secondQuery = `INSERT INTO order_items (order_id, item_id, order_quantity) VALUES ?`; // id, order_id(insertID), item_id, order_quantity
              const params = orders.map((obj) => [
                result.insertId,
                obj.itemId,
                obj.quantity,
              ]);
    
              return db.query(secondQuery, [params], (err, result) => {
                callback(err, result);
              });
            }
            callback(err, null);
          });
        },
      },
      items: {
        get: (callback) => {
          // TODO: Cmarket의 모든 상품을 가져오는 함수를 작성하세요
          // db 모든상품을 mysql 모듈을 써서, 결과로 보내줘야됨.
          // callback(err, result);
          const query = "SELECT * FROM items";
          db.query(query, (err, result) => {
            callback(err, result);
          });
        },
      },
    };
    
    検索したリンクがあれば添付してください.
    また,反応エラーコード自体の検索を繰り返すことも試みた.
    私のコードに問題があると思いますが、調べた結果、関連事項がないようです.
    https://twittercommunity.com/t/cannot-read-property-slice-of-undefined-error-when-trying-to-embed-timeline/157402
    いったいどこが間違ってるの?@@ずっと探してたけど...本当に知らなかった
    助けてよ~😭🙏

    POST:ページsqlクエリの再チェック


    比較するには、変数に参照コードを挿入し、db.query()で実行します.
    get: (userId, callback) => {
    const query = `SELECT o.id, o.created_at, o.total_price, i.name, i.price, i.image, oi.order_quantity  
          FROM orders AS o
          INNER JOIN order_items AS oi ON o.id = oi.order_id
          INNER JOIN items As i ON i.id = oi.item_id  
          WHERE (o.user_id = ?)`;
    
          const referQuery = `SELECT orders.id, orders.created_at, orders.total_price, items.name, items.price, items.image, order_items.order_quantity 
          FROM items
          INNER JOIN order_items ON (order_items.item_id = items.id)
          INNER JOIN orders ON (orders.id = order_items.order_id)
          WHERE (orders.user_id = ?)`;
    
          const params = [userId];
          db.query(query, params, (err, result) => {
            //console.log(result)
            callback(err, result);
          });
    最初はテーブルの連結順序が違うと思っていたのですが、
    どう考えても、どうせInner Joinだから、テーブルの順番は何の関係があるの?および.
    mysqlで各クエリーを検索する

    いいえ、二つの値は同じです.どうして私の(上)だけを見に行きますか.つまり、サインの順番にかかわらず、記録は同じですから.
    わぁ!!!!!!!!!唯一違うところ?!
    見つけたか?!!!では、あなたは鷹の目です!モンゴルの末裔、スーパーコンピューター...ううう
    私のはcreated_Atです.
    転送コードはcreated_at🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯 これで数時間
    mysqlは大文字と小文字を区別しませんが、クライアントノードではありません^^ハハハハSELECT 테이블이름-당신이 화면에 보여주고 싶은 그 어떠한 형태 FROM 테이블 db.query()の結果値の結果もやはり私の加えた列名でクライアントに送ります

    n/a.結論


    その文字の大文字と小文字の違いで間違いがあっただけです.
    考えてみると、原因を見つけるために何時間もライブに来ましたが、
    現実の数千行のコードの中でどれだけこれより深刻なのか...
    したがって、プロジェクトでは、バックエンド/フロントエンドコラボレーション、モード共有、レスポンス/リクエストを選択できます.
    とても大切な教训を得ました.ほほほ
    いずれにしても、私はアゴラをアップロードしません.最後に私の忍耐力を発揮して、もう一度けちをつけます.
    私は自分が間違った原因を見つけたことを喜んでいます.空っぽだけど本当に空っぽな理由
    クライアントは私が作成したものではなく、すでに存在するコードなので、正しく認識されていませんか?(でも、全部のコードを100%書くことができることってどれくらいあるんだろう…他の人が書いたコードの中でもその原因をよく見出すことができるんだろう…ㅠ)