Mhanddev
Mhanddev

Reputation: 3

Constructor & getter in Class of NodeJs is not working

Hi I have a problem at builder level and getter, I'm creating a small application of messages that are stored on the database. I used NodeJs for that, I created a class that allows to connect to the database and manage it,

The database contains a "message" table containing the string "id" "content" "creatd_d" Here is the class code that I call message.js:

let connection = require("../config/connection")
let moment = require("moment")


class Message{

  constructor (row) { 
     return this.row = row
  }


  get content(){
    return this.row.content
  }

  get created_d(){
    return moment(this.row.created_d)
  }

  static create(content, cb){
    connection.query('INSERT INTO message SET content = ?, created_d = ?', [content, new Date()] , (err, results) => {
      if (err) throw err
      cb()

    });
  }


  static all(cb){
    connection.query('SELECT * FROM message order by created_d DESC', (err, rows) =>{ 
        if(err) throw err 
        cb(rows.map((row) => new Message(row))) }) }
  }


module.exports = Message

the goal of getter is to declare the module "moment" that allows to change the format of date, but the getter no longer works Does anyone know, can this come from what please? thank you in advance

Upvotes: 0

Views: 249

Answers (2)

Mhanddev
Mhanddev

Reputation: 3

For more information of my problem; this is the page "index.ejs":

<!DOCTYPE html>
<html>
<head>
    <title>Ma premier app de NodeJs</title>
    <link rel="stylesheet" type="text/css" href="/assets/Semantic/semantic.min.css">
</head>
<body>
    <div class="ui main container">
        <div class="ui fixed inverted menu">
            <a href="/" class="header item">Home</a>

        </div>
        <br>
        <br>
        <h1>Bienvenue sur ma premier page ne NodeJs</h1>
        <% if (locals.flash && locals.flash.error) { %>
        <div class="ui negative message">
            <%= flash.error %>
        </div>
        <% } %>

        <% if (locals.flash && locals.flash.success) { %>
        <div class="ui positive message">
            <%= flash.success   %>
        </div>
        <% } %>

        <form action="/" method="post" class="ui form">
            <div class="field">
                <label for="message">Message</label>
                <textarea name="message" id="message"></textarea>
            </div>
            <button type="submit" class="ui red labeled submit icon button">
                <i class="icon edit"></i> Send
            </button>
        </form>
        <br>
        <h3>Les Messages</h3>
        <% for (message of messages){ %>
        <div class="message-item">
            <div class="ui message">
                <%= message.content %>
                <div class="ui date"><%= message.created_d %></div>
            </div>
            <br>

        </div>
        <%}%>


    </div>

</body>
</html>

And this is the page serveur.js

let express = require("express")
let bodyParser = require("body-parser")
let session = require('express-session'); // Charge le middleware de session

let app = express()

//Moteur de template
app.set('view engine', 'ejs')


//Middleware
app.use('/assets', express.static("public"))
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
app.use(session({
    secret: "monsession",
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false }
}))
app.use(require('./middlewares/flash.js'))

// Les Routes
app.get('/', (req, res) =>{

    let Message = require("./models/message")
    Message.all(function(messages){
        res.render('pages/index', {messages: messages})
    })


})

app.post('/', (req, res)=>{
    // test de disponibilité de message et si il est vide !!
    if (req.body.message === undefined || req.body.message === '') {
        req.flash('error', "Vous n'avez pas poster votre message")
        res.redirect('/')
        // res.render("pages/index", {error: "Vous n'avez pas entré aucun message"})
    }else{
        let Message = require("./models/message")
        Message.create(req.body.message, function(){
            req.flash('success', "Merci !")
            res.redirect('/')
        })
    }
})



app.listen(8080)

thaks

Upvotes: 0

Francois
Francois

Reputation: 3080

Remove the return in return this.row = row in the constructor. You are breaking the constructor and not returning the instance of Message.

Upvotes: 1

Related Questions