Help về mysql trong nodejs



  • Tình hình là em mới học nodejs, e có thắc mắc là về vấn đề như sau, mong mọi người giúp đỡ

    em có 1 function getUser như này http://prntscr.com/jjfv1p
    ngay đoạn params http://prntscr.com/jjfvkb có cách nào mình làm động được không ạ, như kiểu buildWhere nối lại từng điều kiện để xài chung 1 function thôi, chứ như function trên thì điều kiện where khác thì phải viết function mới. em search gg 2 ngày nay rồi nhưng vẫn chưa ra. Mong mọi người hỗ trợ giúp em ạ. Cám ơn mọi người



  • @Tran-Vj
    Đơn giản thôi:

    function buildWhere() {
      return {
         email: 'email',
         userName: 'username'
      }
    }
    const whereObj = buildWhere();
    

    Bạn chỉ cần thay {email: email} bằng whereObj. Vì bản chất chỗ {email: email} là 1 object, bạn chỉ cần pass đúng kiểu dữ liệu theo đặc tả của hàm conn.query là được.



  • Mình đọc thì không hiểu ý bạn lắm, bạn có thể cho ví dụ cụ thể hơn.
    Theo mình thì nếu về technical bạn chưa giải quyết được, thì sao không làm đơn giản hơn.
    Như trên bạn có thể đổi nó lại là getUserByEmail, nếu bạn muốn thì có thể thêm getUserById, hãy giữ mỗi function của bạn ở mức đơn giản nhất có thể.

    0_1526659172742_Single-Responsibility-Principle.jpg ( nguồn internet )



  • @Quy-Tran , dạ cám ơn anh, đúng cái em đang làm



  • @CodeConCat dạ tại em muốn tìm hiểu đe làm cho gọn lại để dùng được nhiều lần, chứ viết mỗi function riêng vậy không dùng lại được điều kiện where cũng hơi phí



  • @Tran-Vj Đôi khi gọn cũng không hay. Mà rõ ràng tốt hơn.
    Gateway của bạn thì sẽ có một số function làm những cviec nhất định rõ ràng phụ thuộc vào việc logic của table đó trong app của bạn. Ví dụ login thì gateway với db của User sẽ có function findByEmailAndPassword(email, password) -> sẽ rõ ràng hơn là lúc nào cũng gom vào. Anyway có thể bạnd dang tạo ra 1 crud gateway chung thì nên đọc về generic object / class. Nhưng mình ủng hộ cách viết rõ ràng. Sau này fix cũng đỡ mệt. JS code đã k có interface, type strong thì nên bắt đầu code rõ ràng tốt hơn.

    Sent from Rodgers Zone!!!

    0

Log in to reply