mysql - 如何在节点 js 中添加自动触发器?
问题描述
我想知道如何使用 mysql 数据库在节点 js 中执行自动触发器。我不知道这类作品的确切词。但我可以提到我在寻找什么。
这是场景:
方案 1:
在数据库中,它们是一个名为 send_email 的表,它包含 id、time 和 email_address 列。所以我想在那个时候向那个特定的电子邮件发送一封电子邮件。如何在带有 mysql 数据库的 node js rest api 中完成此任务?
场景二:
在数据库中,它们是一个名为 send_notification 的表,它包含 id、date 和 email_address 列。所以我想在 1 天到该日期之前发送一封电子邮件,提醒用户以及该日期之后。
场景 3:
每天上午 12 点发送电子邮件或进行一些数据库操作
解决方案
方案 1:
在数据库中,它们是一个名为 send_email 的表,它包含 id、time 和 email_address 列。所以我想在那个时候向那个特定的电子邮件发送一封电子邮件。如何在带有 mysql 数据库的 node js rest api 中完成此任务?
解决方案:假设您希望每 3 小时发送一次电子邮件。创建一种从 mysql 获取数据并发送电子邮件的方法。
let cron = require('node-cron');
cron.schedule('0 0 */3 * * *', () => {
//call method here
});
场景二:
在数据库中,它们是一个名为 send_notification 的表,它包含 id、date 和 email_address 列。所以我想在 1 天到该日期之前发送一封电子邮件,提醒用户以及该日期之后。
解决方案:每天在特定时间运行 cron 作业并使用这些查询从数据库获取记录。
SELECT * FROM FOO
WHERE date >= NOW() + INTERVAL 1 DAY
// This query will help to get records 1 day before
SELECT * FROM FOO
WHERE date >= NOW() - INTERVAL 1 DAY
// This query will help to get records 1 day after
let cron = require('node-cron');
cron.schedule('0 0 0 * * *', () => {
//call method here
});
场景 3:
每天上午 12 点发送电子邮件或进行一些数据库操作
解决方案
let cron = require('node-cron');
cron.schedule('0 0 0 * * *', () => {
//call method here
});
Nodemailer是一个帮助发送电子邮件的软件包
var nodemailer = require('nodemailer');
// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');
// setup e-mail data with unicode symbols
var mailOptions = {
from: '"Fred Foo ?" <foo@blurdybloop.com>', // sender address
to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers
subject: 'Hello ✔', // Subject line
text: 'Hello world ?', // plaintext body
html: '<b>Hello world ?</b>' // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
或没有 SMTP
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
transport: 'ses', // loads nodemailer-ses-transport
accessKeyId: 'AWSACCESSKEY',
secretAccessKey: 'AWS/Secret/key'
});
transporter.sendMail(data[, callback])
推荐阅读
- html - 单击填充时模态引导关闭模态
- neural-network - 在 RaspberryPi 上构建语音到文本神经网络
- javascript - 将 React withRouter 用于类组件
- excel - EXCEL:求解器约束
- mysql - product_code 的格式为 String 且要与数值比较
- java - 为什么 Google Guice 无法初始化 i18n 对象并给我 null
- angular - Angular ThreeJS | 如何正确创建自定义画布
- django - 使用 Google Cloud Platform 的标准环境时,我应该使用 gunicorn 为 Django 服务吗?
- mysql - zepplin mysql 解释器错误,无法获取 mysql:mysql-connector-java:5.1.38 的依赖项
- python - 在 Mac(终端)/Windows(命令行)中自动执行 Python 脚本