1.8 KiB
Managing Documents
Frappe.js Object-Relational-Mapper (ORM) helps you manage (create, read, update, delete) documents based on the DocTypes declared.
Documents are sub-classed from the frappe.document.Document class.
All document write methods are asynchronous and return javascript Promise objects.
Initialize
Documents are initialized with the frappe.getDoc method. If doctype and name are passed as parameters, then the document is fetched from the backend. If a simple object is passed, then object properties are set in the document.
// make a new todo
let todo = await frappe.getDoc({doctype: 'ToDo', subject: 'something'});
Create
You can insert a document in the backend with the insert method.
// make a new todo
let todo = await frappe.getDoc({doctype: 'ToDo', subject: 'something'});
await todo.insert();
Read
You can read a document from the backend with the frappe.getDoc method
// get all open todos
let todos = await frappe.db.getAll({doctype:'ToDo', fields:['name'], filters: {status: "Open"});
let first_todo = await frappe.getDoc('ToDo', toods[0].name);
Update
The update method updates a document.
// get all open todos
let todos = await frappe.db.getAll({doctype:'ToDo', fields:['name'], filters: {status: "Open"});
let first_todo = await frappe.getDoc('ToDo', toods[0].name);
first_todo.status = 'Closed';
await first_todo.update();
Delete
The delete method deletes a document.
// get all open todos
let todos = await frappe.db.getAll({doctype:'ToDo', fields:['name'], filters: {status: "Open"});
let first_todo = await frappe.getDoc('ToDo', toods[0].name);
await first_todo.delete();
Extending Documents
Each model can be extended by adding events in the controller class.