我正在使用AWS SES服务发送电子邮件通知。下面是相应的js文件,负责使用模板发送自定义电子邮件。
const AWS = require('aws-sdk');
const { models } = require('../api/sequelize');
let destination = '';
let questionId = '';
let userId = '';
let answerId = '';
let answerBy = '';
let questionBy = '';
class AnswerNotifcation {
constructor(qId, uId, aId) {
questionId = qId;
userId = uId;
answerId = aId;
}
async notification() {
try {
const answerByDetail = await models.answer.findByPk(answerId, {
include: [{
model: models.user,
attributes: ['fullName', 'userName', 'userId', 'email'],
}]
});
const questionByDetail = await models.question.findByPk(questionId, {
include: [{
model: models.user,
attributes: ['fullName', 'userName', 'userId', 'email'],
}]
});
const notification = models.notification.create({
userId: questionByDetail.userId,
senderUserId: answerByDetail.userId,
message: 'Answered your question',
redirectLink: `/q/${questionByDetail.slug}#${answerByDetail.answerId}`,
isRead: 'false',
type: 'answers',
isHidden: 'false'
})
destination = questionByDetail.user.email;
answerBy = answerByDetail.user.fullName;
questionBy = questionByDetail.user.fullName;
this.sendNotification(destination, answerBy, questionBy)
} catch (err) {
console.log('\n\tError sending email notification \n\t', err);
}
}
sendNotification(dest, aBy, qBy) {
AWS.config.update({
region: "us-east-1"
});
this.ses = new AWS.SES({ apiVersion: "2010-12-01" });
this.params = {
"Source": "no-reply@testing.com",
"Template": "Answer_Template",
"ConfigurationSetName": "testConfig",
"Destination": {
"ToAddresses": [dest]
},
"TemplateData": `{\"receiverName\":\"${qBy}\",\"senderName\":\"${aBy}\", \"description\":\"Answered Your Question\"}`
}
console.log("Sending notification for answer");
this.ses.sendTemplatedEmail(this.params, (err, data) => {
if (err) console.log(err, err.stack);
else console.log(data);
});
}
}
module.exports = AnswerNotifcation;我的问题是,导入完整的aws-sdk而不是导入我们只需要的包(在上面的代码中是我使用的AWS.config和AWS.SES ),这是一个好方法吗?
这是导入完整的aws-sdk还是只导入我们正在使用的服务(如import { <ServiceName> } from 'aws-sdk' )的有效方法
发布于 2021-05-17 00:30:27
更好的做法是只加载您将要使用的AWS SDK。例如,如果要使用S3,则使用:
const {S3} = require('@aws-sdk/client-s3');有关详细信息,请参阅AWS JavaScript DEV Guide。
https://stackoverflow.com/questions/67554220
复制相似问题