Page 1 of 1

Can't get Update and Delete to work with MySQL Backend

Posted: Wed Sep 16, 2020 10:29 pm
by jayman

Hi all,

I have taken the tutorial at https://docs.appery.io/docs/ionic-4-todo-list-tutorial and have gotten it to work with the Appery.io database; but longer term I want to write an app that can CRUD (Create, Read, Update, Delete) entries with my existing database.

I was able to expose my database (MySQL running on AWS) via the API Express and I then modified the above tutorial to use this datasource for my app. I am able to view a list of items in my own database and I can add new items. However, I cannot delete or update items in my database.

When I try to delete an item nothing happens, but if I view my console in Chrome I see an error of "Can't perform 'delete' on todoDB_task_, object ID is empty". I suspect that the ID of the task is not being passed to the code to delete it. When I look at the related code I do see this error of "Cannot Find Name 'taskId'".

Any ideas? I also cannot edit entries, but it seems to me that create and list don't need to taskId passed, but Update and Delete do???

Help! Thanks in advance

Jay


Re: Can't get Update and Delete to work with MySQL Backend

Posted: Thu Sep 17, 2020 10:00 am
by Serhii Kulibaba

Hello Jay,

This tutorial uses Appery.io database, so some issues might happen if you use your own - it is not a problem, we will help you to solve it.

Of course you should pass the id to the delete service to make the database know the id to delete.

The question is: does your database table have the id column?

How do you pass the selected item id there? The same as it is shown here? https://docs.appery.io/docs/ionic-4-tod ... ting-tasks


Re: Can't get Update and Delete to work with MySQL Backend

Posted: Wed Sep 23, 2020 10:38 pm
by jayman

Apologies - I only saw your kind response now... to answer your questions (both using references to "https://docs.appery.io/docs/ionic-4-tod ... ting-tasks"):

  1. Does your database table have the id column?

At the Database step "New taskName column appears in the table"... I see that the Appery Database adds a column with the name "_id"... I did the same in MySQL
CREATE TABLE tasks (
_id int(11) NOT NULL AUTO_INCREMENT,
taskName varchar(100) DEFAULT NULL,
_createdAt datetime DEFAULT NULL,
_UpdatedAt datetime DEFAULT NULL,
PRIMARY KEY (_id)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

  1. How do you pass the selected item id there?

Similar to the Appery.io example, I add it to the edit button:
i = editTask(task.id, task.taskName):[/i]
or I add it to the delete button:
i = deleteTask(task.id):[/i]
The related code for deleteTask then includes that I add "_id": taskId to the params block etc.

Thank you in advance!
Jay


Re: Can't get Update and Delete to work with MySQL Backend

Posted: Fri Sep 25, 2020 7:19 pm
by Serhii Kulibaba

Could you just test it with the static ID value? Once it is working fine we will move on to pass the correct it there.

But it seems you just need to pass the id parameter there, not id, so your code should be:

Code: Select all

deleteTask(task._id)

Please check the database response with the correct object structure to be sure you do it right


Re: Can't get Update and Delete to work with MySQL Backend

Posted: Sun Sep 27, 2020 10:26 am
by jayman

Hi,

Thanks for your ongoing help.

Firstly on the code - I set the button to have deleteTask(task._id) as the action when I click, but it still does not work.

Next, I then went into the service "todoDB_task_delete" and added the ID of an existing MySQL DB entry as the Value in the Request tab.
When I tested the app, clicking the button deleted the DB entry with that number as the _id... so I know the code works when it gets the right data passed to it.

I then went into the code for deleteTask - just to confirm it has taskId as an argument

Error.jpg
Error.jpg (159.6 KiB) Viewed 4730 times

- changing this to id doesn't seem to help.
I do notice that if I am using the Appery.io database or my own database, I see an error for where I have added "id": taskId to the params block.
There is a red box and the error is Cannot find name "taskId".

Any other ideas?
Thank you

JMC