At 11:10 I felt a CATHARTIC feeling, thank you mate!! That was the point when I understood the whole meaning of "API" and "backend". :) I started my learning path with courses on frontend, how to create simple webpages (HTML, CSS, JavaScript basics), then I learned the SQL queries of MS SQL and MySQL, and now I could connect the two with your help, thanks a lot!!
Amazing thank you , I'm used to use mysql for my project and when i saw for node everyone use mongodb , i learn mongodb but I'm really happy to see i tutorial for node and mysql so thank you :)
Good video. Just to make life easier at the start when you're creating a package.json file. If you type "npm init --yes", a file will be created without asking you any questions.
For anyone looking to copy and paste some SQL statements with some sample data for insert and just wanted to save some typing: use EmployeeDB; create table `employee` ( `EmpID` int(11) not null auto_increment, `Name` varchar(45) default null, `EmpCode` varchar(45) default null, `Salary` int(11) default null, primary key (`EmpID`) ) engine=InnoDB auto_increment=0 default charset=utf8mb4; select * from employee; lock tables `employee` write; insert into `employee` values (1, 'Tommy Eatsheet', 'EMP90', 265400), (2, 'Jess Fukenson', 'EMP92', 50000),(3, 'Bob Knobhead', 'EMP95', 10000),(4, 'Dick knogginson', 'EMP96', 90000);
in 22:24 when you made a variable and called it SQL you add '@' behind each of the request data like 'set @empId = ?' I want to know why? I can't just do the POST!
For those who get this : ER_NOT_SUPPORTED_AUTH_MODE after doing node index.js this is error is mentioning when you install sql server you selected"strong authentication", but you set a weak password. You need to reset strong password or need to choose legacy authentication method. Follow these steps to choose legacy authentication method You installed mysql server using "mysql installer" 1)open -> "mysql intsaller" 2)press reconfig mysql server 3)select left side "authentication method tab" 4)select radio button -->use legacy authentication method 5)now stop and restart the db and it should work
so how do i reopen the workspace when it shows me this? [Info - 8:26:41 PM] ESLint server stopped. [Info - 8:26:42 PM] ESLint server running in node v10.11.0 [Info - 8:26:42 PM] ESLint server is running. [Info - 8:26:45 PM] Failed to load the ESLint library for the document c:\Users w888\Desktop\project\package.json To use ESLint please install eslint by running npm install eslint in the workspace folder project or globally using 'npm install -g eslint'. You need to reopen the workspace after installing eslint. If you are using yarn or pnpm instead of npm set the setting `eslint.packageManager` to either `yarn` or `pnpm` Alternatively you can disable ESLint for the workspace folder project by executing the 'Disable ESLint' command. [Info - 8:26:45 PM] Failed to load the ESLint library for the document c:\Users w888\Desktop\project\index.js
Awesome tutorial! Just had one question regarding the mysqlconnection. I noticed that you never actively closed your connection to the database. Will that cause issues in production, or are there underlying features within the packages used that help manage the connections as clients connect to your application?
This was perfect thanks a lot. Just in case someone is using this today or in the near future, I had an error on workbench I changed the last line of code to this ENGINE=iNNOdb AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 and it worked just fine It was the only issue I had
IF U CREATE STORED PROCEDURE IN MYSQL USING XAMPP, THEN IST LINE IS CREATE PROCEDURE PROCEDURENAME( PROCEDURENAME IS NOT BETWEEN ANY SEMICOLONS AND USE DELIMETER AS //
hello codeAffection can you make the same thing for nodejs+postgresql the connection,how to insert,update,delete using the post,get,put http request can you??
Hello! Good tutorial! If you don't mind, could you please advise me, how to post query results to normal address, without port number. Seemingly i cannot post result to the page.
getting this error: dbconnection failed: { "code": "ER_NOT_SUPPORTED_AUTH_MODE", "errno": 1251, "sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client", "sqlState": "08004", "fatal": true }
this code at 7:35 cant connect to 'remote mysql' (mean the database not in localhost) Solution : ourcodeworld.com/articles/read/258/how-to-connect-to-a-mysql-database-with-node-js
Thanks for the gr8 video but getting following error if you can help err { "code": "ER_NOT_SUPPORTED_AUTH_MODE", "errno": 1251, "sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client", "sqlState": "08004", "fatal": true
open MySQL command line client and run ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '****'; it will change authentication type to standard which will allow to connect
I got this error message: { "code": "ER_NOT_SUPPORTED_AUTH_MODE", "errno": 1251, "sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client", "sqlState": "08004", "fatal": true }
If anyone is getting this error =>> CONNECTION failed Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client first run the below code in your MySQL workbench and then try running node index.js ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
Hi I got this error. Can you please explain about this? DB Connection Failed Error: { "code": "ER_NOT_SUPPORTED_AUTH_MODE", "errno": 1251, "sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client", "sqlState": "08004", "fatal": true }
I am not sure why my Post request is not running. I get this error TypeError: Cannot read properties of undefined (reading 'Empid') at C: ode project\CRUD\index.js:64:37 at Layer.handle [as handle_request] (C: ode project\CRUD ode_modules\express\lib outer\layer.js:95:5) at next (C: ode project\CRUD ode_modules\express\lib outer oute.js:144:13) at Route.dispatch (C: ode project\CRUD ode_modules\express\lib outer oute.js:114:3) at Layer.handle [as handle_request] (C: ode project\CRUD ode_modules\express\lib outer\layer.js:95:5) at C: ode project\CRUD ode_modules\express\lib outer\index.js:284:15 at Function.process_params (C: ode project\CRUD ode_modules\express\lib outer\index.js:346:12) at next (C: ode project\CRUD ode_modules\express\lib outer\index.js:280:10) at expressInit (C: ode project\CRUD ode_modules\express\lib\middleware\init.js:40:5) at Layer.handle [as handle_request] (C: ode project\CRUD ode_modules\express\lib outer\layer.js:95:5) Can anyone help why is this happening
Excellent!. Concise, precise, direct and accurate. I tried mysql v8.0 initially. It threw error about authentication/authorization. Changed to mysql 5.6 and then everything went fine. Can you show how to work with mysql v8.0, the latest? Thanks.
npm i mysql2 and then the following code in your index.js file const mysql = require('mysql2') var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : "&&&&" database : 'EmployeeDB' }); connection.connect((err) => { if (!err) console.log('DB connection succeded.'); else console.log('DB connection failed Error : ' + JSON.stringify(err, undefined, 2)); });
not able to connect oracle client ReferenceError: client is not defined at Object. (E:\CrudProject\index.js:8:3) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:191:16) at bootstrap_node.js:612:3
If anybody is using MySQL 8.x then execute this query first in your MySQL workbench ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password; Otherwise, the connection won't be established
Hi I am not able to connect !! I have created a database in work bench and a table with values but in my node file I am not able to connect !! I have given host user name pass but still not getting a connection
I'm tired of trying connection node to mysql. im getting db connection failed. tried so many times but still getting an error. please help me out. And your explaination was awesome.
DB connection failed Err { "code": "ER_NOT_SUPPORTED_AUTH_MODE", "errno": 1251, "sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client", "sqlState": "08004", "fatal": true } bro Im fasing this err. let me help to rectify this error... help me brother....
hi, i'm getting error like this at Function.Module._resolveFilename (internal/modules/cjs/loader.js:625:15)←[39m ←[90m at Function.Module._load (internal/modules/cjs/loader.js:527:27)←[39m
goo.gl/RFY5C2 : Subscribe to CodAffection
goo.gl/bPcyXW : Buy me a Coffee
How can using MySQL and MS-SQL on the same machine
Hi, have you ever tried building the query into a middleware? I'm having issues exporting my response. Any tips?
WHAT IS THIS ACCENT?
Man, very thanks for this video
At 11:10 I felt a CATHARTIC feeling, thank you mate!!
That was the point when I understood the whole meaning of "API" and "backend". :)
I started my learning path with courses on frontend, how to create simple webpages (HTML, CSS, JavaScript basics),
then I learned the SQL queries of MS SQL and MySQL,
and now I could connect the two with your help, thanks a lot!!
[04:40] : index.js
[07:46] : express
[18:24] : Insert an employees (Store procedure)
[26:05] : Update an employees
Thank you so much, I was searching for this from 7-8 hours but nothing found , Now I have done it in one try after this tutorial. Again thanks
Glad you found this helpful.
Wow...simply wow. Took a bit for me to get everything installed and to work out my syntax errors but your tutorial is flawless. Thanks!
Amazing thank you , I'm used to use mysql for my project and when i saw for node everyone use mongodb , i learn mongodb but I'm really happy to see i tutorial for node and mysql so thank you :)
Hey yukina! Do you know of a video like this, but with mongodb instead of MySQL ? That would be really helpful! Thanks :)
Thanks you i was looking for this entire TH-cam and here i get my solution love from india😇
Thanks man! It really helped... I was searching on the internet since a long...finally found something useful...Nice explanation.
Good video. Just to make life easier at the start when you're creating a package.json file. If you type "npm init --yes", a file will be created without asking you any questions.
it can also work with npm init -y ..
awesome, without --yes it was giving error module not found. thanks for help :)
Thanks for the info.
Congrats, amazing tutorial, I imagined Node.js was a monster.
For anyone looking to copy and paste some SQL statements with some sample data for insert and just wanted to save some typing:
use EmployeeDB;
create table `employee` (
`EmpID` int(11) not null auto_increment,
`Name` varchar(45) default null,
`EmpCode` varchar(45) default null,
`Salary` int(11) default null,
primary key (`EmpID`)
) engine=InnoDB auto_increment=0 default charset=utf8mb4;
select * from employee;
lock tables `employee` write;
insert into `employee` values (1, 'Tommy Eatsheet', 'EMP90', 265400), (2, 'Jess Fukenson', 'EMP92', 50000),(3, 'Bob Knobhead', 'EMP95', 10000),(4, 'Dick knogginson', 'EMP96', 90000);
Thank you.
i was literally searching this in comments ,thankyou somuch.
thank you so much, i was searching it for 1 week finally i got from this video it was excellent
Glad to hear that
Thanks sir I watched lots of video but that didn't worked for me but your video worked properly for thanks for such a great tutorial
Glad to hear that
Thankyou so much again for such a wonderful video that make me understand Node jS API and I can say I know Node js.
17:28 Did you mentioned 'ForceMan'? Why did you use it?
in 22:24 when you made a variable and called it SQL you add '@' behind each of the request data like 'set @empId = ?' I want to know why?
I can't just do the POST!
This is exactly what I was looking for. Thanks !
For those who get this : ER_NOT_SUPPORTED_AUTH_MODE
after doing node index.js
this is error is mentioning when you install sql server you selected"strong authentication", but you set a weak password. You need to reset strong password or need to choose legacy authentication method.
Follow these steps to choose legacy authentication method
You installed mysql server using "mysql installer"
1)open -> "mysql intsaller"
2)press reconfig mysql server
3)select left side "authentication method tab"
4)select radio button -->use legacy authentication method
5)now stop and restart the db
and it should work
thanks buddy
Started just in the beginning, I know that this is what I was looking for. Thanks
glad it helped.
It was the best tutorial I ever watched about GET,POST,PUT and DELETE
so how do i reopen the workspace when it shows me this?
[Info - 8:26:41 PM] ESLint server stopped.
[Info - 8:26:42 PM] ESLint server running in node v10.11.0
[Info - 8:26:42 PM] ESLint server is running.
[Info - 8:26:45 PM]
Failed to load the ESLint library for the document c:\Users
w888\Desktop\project\package.json
To use ESLint please install eslint by running npm install eslint in the workspace folder project
or globally using 'npm install -g eslint'. You need to reopen the workspace after installing eslint.
If you are using yarn or pnpm instead of npm set the setting `eslint.packageManager` to either `yarn` or `pnpm`
Alternatively you can disable ESLint for the workspace folder project by executing the 'Disable ESLint' command.
[Info - 8:26:45 PM]
Failed to load the ESLint library for the document c:\Users
w888\Desktop\project\index.js
This is superb guidance tutorial for beginners
Glad you think so!
it is very helpful and easy way to understand api thanks a lot
Exactly what I needed, Thanks a lot :) Just a tip for those who are facing problem in inserting data to the database table - make EmpID AUTO_INCREMENT
but in my code auto increment is not working I don't know why
excelent, Brazil here, thx for help!
somebody plz tell how to connect this nodejs to angular for crup operations plzzzzzzz
can you tell me how can i use this to create a login feature on my HTML website using nodejs and mysqlworkbench
The table creation data:
CREATE TABLE `employee` (
`EmpId` INT(11) NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(45) DEFAULT NULL,
`EmpCode` VARCHAR(45) DEFAULT NULL,
`Salary` INT(11) DEFAULT NULL,
PRIMARY KEY (`EmpId`))
ENGINE = InnoDB AUTO_INCREMENT=0;
you saved me
How to you run index.js file in command prompt. Here i can not run node index.js file.
thankyou, may i ask what is difference between put and post
Thank you very much for the tutorial. It is the great tutorial I have met so far.
if i refactor my code into multiple files eg. routes etc do i need to create mysqlConnection object for every page? please reply thank in advance :)
Awesome tutorial!
Just had one question regarding the mysqlconnection.
I noticed that you never actively closed your connection to the database. Will that cause issues in production, or are there underlying features within the packages used that help manage the connections as clients connect to your application?
Integer display width is deprecated. You don't need it, you just need 'int'.
This was perfect thanks a lot. Just in case someone is using this today or in the near future, I had an error on workbench
I changed the last line of code to this
ENGINE=iNNOdb AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
and it worked just fine
It was the only issue I had
TY
Thanks man you saved me
I am getting the message DB connection succeded... but when passing /employees I am not seeing the table record
Same here... Found any solution?
any solution?
same here
@@junaidqureshi9376 can u get any solution on these??
Why did you use stored procedure instead of normal query, is there any reason ?
What online cloud database do we use to migrate/deploy the mysql workbench database?
IF U CREATE STORED PROCEDURE IN MYSQL USING XAMPP,
THEN IST LINE IS
CREATE PROCEDURE PROCEDURENAME(
PROCEDURENAME IS NOT BETWEEN ANY SEMICOLONS
AND USE DELIMETER AS //
Indian coding YTbers are carrying us through quarantine projects/assignments
hello codeAffection can you make the same thing for nodejs+postgresql the connection,how to insert,update,delete using the post,get,put http request can you??
@raddy 's tutorial is awesome
how can I link the routes with a front end user interface whereby my user can fetch all the data by clicking on a button?
By API
You can also use MySQL server of XAMPP
Thank you so much brother. This is exactly what I wanted. 😁
Most welcome 😊
Hello! Good tutorial! If you don't mind, could you please advise me, how to post query results to normal address, without port number. Seemingly i cannot post result to the page.
getting this error:
dbconnection failed: {
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
}
Great!!!! easy explaination and simple script usage
sir, you didn't show how to make the model with for example sequelize?
this code at 7:35 cant connect to 'remote mysql' (mean the database not in localhost)
Solution :
ourcodeworld.com/articles/read/258/how-to-connect-to-a-mysql-database-with-node-js
literally killed me with your joke 7:25
Thanks for the gr8 video but getting following error if you can help
err {
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
found the solution after few research...
open MySQL command line client and run
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '****';
it will change authentication type to standard which will allow to connect
my post method is not working it shows 200 requests but does not store data in MySQL plz help
how to check existing row before delete it using in delete method
Thank you so much, it is help me a lot, how to display data in html table?
I'm getting error with rows[0]..It says "not able to read properties of undefined)
I got this error message: {
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
}
install mysql2
thank you so much, amazing tutorial here!
where can I find that copy paste query? please let me know.
Very Nice, Very Easy
I am getting error saying 1251 client does not support authentication protocol requested by server pls help
love your tuts..... plz make a tutorial on "WPF login(hashed) MVVM and EF7 CRUD application with online mysql database "
How to create this procedure in Ubuntu terminal??
i cant connect because the hostname , where you find hostname ?
This is my Request to give me suggestion that how can I write API with MS Sql Server ....What are connections and packages ?
Unable to fetch data from database. But db is connected
same! did you resolve it?
what about if it not storedprocedure table then what will be the query???? kindly help me
If anyone is getting this error =>> CONNECTION failed Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
first run the below code in your MySQL workbench and then try running node index.js
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
Hi I got this error. Can you please explain about this?
DB Connection Failed
Error: {
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
}
did you solve it?
I am not sure why my Post request is not running. I get this error
TypeError: Cannot read properties of undefined (reading 'Empid')
at C:
ode project\CRUD\index.js:64:37
at Layer.handle [as handle_request] (C:
ode project\CRUD
ode_modules\express\lib
outer\layer.js:95:5)
at next (C:
ode project\CRUD
ode_modules\express\lib
outer
oute.js:144:13)
at Route.dispatch (C:
ode project\CRUD
ode_modules\express\lib
outer
oute.js:114:3)
at Layer.handle [as handle_request] (C:
ode project\CRUD
ode_modules\express\lib
outer\layer.js:95:5)
at C:
ode project\CRUD
ode_modules\express\lib
outer\index.js:284:15
at Function.process_params (C:
ode project\CRUD
ode_modules\express\lib
outer\index.js:346:12)
at next (C:
ode project\CRUD
ode_modules\express\lib
outer\index.js:280:10)
at expressInit (C:
ode project\CRUD
ode_modules\express\lib\middleware\init.js:40:5)
at Layer.handle [as handle_request] (C:
ode project\CRUD
ode_modules\express\lib
outer\layer.js:95:5)
Can anyone help why is this happening
I added these 2 lines in my code and after that it worked fine
app.use(express.urlencoded({extended: true}));
app.use(express.json());
Excellent!. Concise, precise, direct and accurate. I tried mysql v8.0 initially. It threw error about authentication/authorization. Changed to mysql 5.6 and then everything went fine. Can you show how to work with mysql v8.0, the latest? Thanks.
+1
npm i mysql2 and then the following code in your index.js file const mysql = require('mysql2')
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : "&&&&"
database : 'EmployeeDB'
});
connection.connect((err) => {
if (!err)
console.log('DB connection succeded.');
else
console.log('DB connection failed
Error : ' + JSON.stringify(err, undefined, 2));
});
@@tripathi5174 thank you so much, it worked for me..
Thank you bro. You make easy to understand.
How to write procedure in mysql(phpmyadmin)
thanks man.. what a great video.. easy and sharp... you saved my day. I appreciate your work.
Glad you found the video helpful.
Exactly what I needed, great tutorial!
glad you found the video helpful.
not able to connect oracle client
ReferenceError: client is not defined
at Object. (E:\CrudProject\index.js:8:3)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
The video is very useful for me, thanks for your excellent job.
If anybody is using MySQL 8.x then execute this query first in your MySQL workbench
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password;
Otherwise, the connection won't be established
DB Connection failed even after doing this.
it was very helpful ,thankyou
Great! How to integrate API key with GET ,POST,PUT and DELETE request??
salaam,Mr.Imtiaz this is syed could u pls teach me about put and delete method in node js(REST API)
7845136318
very helpful tutorial.
Hi I am not able to connect !! I have created a database in work bench and a table with values but in my node file I am not able to connect !! I have given host user name pass but still not getting a connection
Thanks for your efforts and time - Dotnet Mob, Just a small question if you have time, how we can use this node project as back-end for angular
Node.js act as back-end in MEAN stack applications with Angular(front-end).
Yes that is ok but, my interest is how to do this?
Within 1 week, I'll upload a video tutorial on this topic.
Tusi Great Ho Paa Jee,
MEAN Stack CRUD Operations : th-cam.com/video/UYh6EvpQquw/w-d-xo.html
why is the route employees? when the table is called employee?
Thank you man, a very clear explanation!
Thank You so much made my day :)
tq....exactly wat i needed ....great tutorial
Superb explanation Sir.
why res.send() is not working in my code ?
It shows on the command prompt "res.send is not a function" , what is a solution of this problem ?
Hello sir... I m getting an error.. the errno is 1251..!! Can you please help...!
hello sir pls provide information about how to download mysql and how to connect it with angular6
you can download the MySQL Workbench that's used in this video from dev.mysql.com/downloads/workbench/
You can also use MySQL server of XAMPP
I use dbeaver with mysqhost.tk admin.How i can add new schema there?
I am getting the error message after insert query:
I have table name LSMD
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: 'Table \'LSMD.employee\' doesn\'t exist',
sqlState: '42S02',
index: 4,
sql:
'SET @EmpID = 0;SET @Name = \'Waheed Ali\';SET @EmpCode = \'EMP95\';SET @Salary = 53210; CALL EmployeeAddorEdit(@EmpID,@Name,@EmpCode,@Salary);' }
I'm tired of trying connection node to mysql. im getting db connection failed. tried so many times but still getting an error. please help me out. And your explaination was awesome.
How are you getting to the MySQL Workbench. Please explain?
MySQL workbench is a dbms like phpmyadmin or SQLyog so you have to have it installed
DB connection failed
Err {
"code": "ER_NOT_SUPPORTED_AUTH_MODE",
"errno": 1251,
"sqlMessage": "Client does not support authentication protocol requested by server; consider upgrading MySQL client",
"sqlState": "08004",
"fatal": true
}
bro Im fasing this err. let me help to rectify this error...
help me brother....
did you find the solution
@@yahiyaa2798 no bro i forgot that. I have that issue 😂
Thanks for this amazing clear tutorial
Glad you found the video helpful.
how i add response codes?
Wouldn't setting multiple statements variable to true put your db at risk for query injection? Very easy tutorial to follow along with though...
hi, i'm getting error like this
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:625:15)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:527:27)←[39m
Thank you so much for this tutorial, it's been very helpful
Glad you found this video helpful.