mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-03 19:36:20 +00:00 
			
		
		
		
	
		
			
				
	
	
	
		
			1.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.7 KiB
		
	
	
	
	
	
	
	
Services
See the services concept for details.
How to create a service?
There is two ways to create a service.
- Using the CLI 
strapi generate:service user. Read the CLI documentation for more information. - Manually create a JavaScript file named 
User.jsin./api/**/services/. 
Example
The goal of a service is to store reusable functions. An email service could be useful, if we plan to send emails from different functions in our codebase:
Path — ./api/email/services/Email.js.
const nodemailer = require('nodemailer');
// Create reusable transporter object using SMTP transport.
const transporter = nodemailer.createTransport({
  service: 'Gmail',
  auth: {
    user: 'user@gmail.com',
    pass: 'password'
  }
});
module.exports = {
  send: (from, to, subject, text) => {  
    // Setup e-mail data.
    const options = {
      from,
      to,
      subject,
      text
    };
    // Return a promise of the function that sends the email.
    return transporter.sendMail(options);
  }
};
::: note
please make sure you installed nodemailer (npm install nodemailer) for this example.
:::
The service is now available through the strapi.services global variable. We can use it in another part of our codebase. For example a controller like below:
Path — ./api/user/controllers/User.js.
module.exports = {
  // GET /hello
  signup: async (ctx) => {
    // Store the new user in database.
    const user = await User.create(ctx.params);
    // Send an email to validate his subscriptions.
    strapi.services.email.send('welcome@mysite.com', user.email, 'Welcome', '...');
    // Send response to the server.
    ctx.send({
      ok: true
    });
  }
};