samedi 22 août 2020

Send true or false to database wether checkbox is checked or not

i got an issue regarding checkboxes with nedb. I want to send true or false if the checkbox is checked or not to the database i cannot solve this issue. i am working with node.js and nedb. please help!

client js eventlistener:

var taskDone = document.querySelectorAll('.taskDone');


taskDone.forEach(btn => {
     btn.addEventListener('click', (e) => {
        var done = e.target.attributes[1].value;

        let id = e.target.getAttribute('data-id');
        let isDone = document.querySelector(`input[data-id=${id}]`).value;

        console.log(isDone + "isdone")
        if ($(taskDone).is(':checked')) {
            $('.text').addClass('line-through')
            console.log("trues")
            $.ajax({
                url: 'http://localhost:3000/done/' + id,
                type: 'PUT',
                data: { isDone }
            }).done(function (data) {
                //location.reload()
                console.log(data)
            })

        } else {
            console.log('falses')
            $('.text').removeClass('line-through')
        }
    })
})

update function to nedb:

    function taskIsDone (id, done) {
    return new Promise((resolve, reject) => {
        db.update({ _id: id }, { $set: done }, { returnUpdatedDocs: true }, (err, num, updateDocs) => {
            if (err) {
                reject(err)
            } else {
                resolve(updateDocs)
            }
        })
    })
}

server:

app.put('/done/:_id', async(req, res) => {
  try {
    var id = req.params._id;
    let done = {
      title: req.body.isDone,
    }
      const updateToDo = await taskIsDone(id, done)
      console.log(updateToDo + " Todo done");
      res.json(updateToDo);
  } catch (error) {
    res.json({error: error.message});
  }
})

html/ejs:

<% for ( var i = 0; i < row.length; i++) { %>
        <div class="edit-container" >
        
                <input type="text" name="editTask" value="<%=row[i].title %>" data-id="<%=row[i]._id %>">

                <button name="<%= row[i]._id %>" class="edit" data-id="<%=row[i]._id %>">save edit</button>
        </div>
        
        <div>
                <input type="checkbox" name="isDone" class="taskDone" data-id="<%=row[i]._id %>">
                <span class="text"><%= row[i].title %></span>
                <button class="delete" name="<%= row[i]._id %>">delete</button>
        </div>
        <br>
    <% } %>

i could really need some help with this! thanks




Aucun commentaire:

Enregistrer un commentaire