Tengo un sitio de nodo js en el sistema local donde el usuario es notificado para artículos de tendencia o publicar por correo electrónico. Mi código funciona como :-

app.get('/:articlename', (req, res)=>{
conn.query(`SELECT views,isAlreadySent FROM article_table WHERE article_name='${req.params.articlename}'`, (err, results, fields)=>{
// if views greater then 5000 views and isAlreadySent is false then send email to subscribed user from database
    })
});

El código anterior es largo que les estoy mostrando la versión más corta. Todo funciona bien. Mi código es que cuando cualquier usuario ve cualquier artículo se desencadena el método de envío de correo electrónico y si ese artículo tiene vistas más de 5000 entonces su correo electrónico se enviará a todos los usuarios suscritos, pero el usuario suscrito puede ser miles por lo que ¿cómo puedo enviar correo electrónico a todo el usuario suscrito sin retraso del espectador actual

Quiero hacer que el usuario notificado como pinterest, medio notifica a millones de usuarios por correo

Quiero decir, cuando cualquier usuario solicite la página del artículo un bloque de código comprobará las vistas y si las vistas son mayores, entonces se enviará un correo electrónico a varios usuarios. El número de usuarios puede ser grande y si envié correo electrónico en el momento en que el usuario solicita el artículo, entonces puede ser un retraso inusual para ese usuario. Quiero que si las vistas son mayores entonces algo entonces debe publicar cualquier valor bool a otro programa y que el programa debe enviar un correo electrónico a todos detrás de las escenas sin molestar al usuario o se puede hacer por cualquier otro truco por favor dígale

0
Mr. Explorer explorer 4 nov. 2019 a las 16:31

3 respuestas

En primer lugar, renderice la vista y, a continuación, envíe un correo electrónico.

app.get('/:articlename', (req, res)=>{
  // DO YOUR STUFF
  // Render the article
  res.render('view');

  // Now process email stuff
  conn.query(`SELECT views,isAlreadySent FROM article_table WHERE article_name='${req.params.articlename}'`, (err, results, fields)=>{
    // if views greater then 5000 views and isAlreadySent is false then send email to subscribed user from database
    // SEND EMAIL HERE.
  });
});
0
Dijkstra 4 nov. 2019 a las 13:51

Bueno, el clásico y más fácil es añadir un bucle. For-loop o while-loop. Así que podrías hacer algo como esto:

for (let i=0;i<viewers.length;i++) { //assume that viewers is a list / array
    //sendmail()
}

este es el código para enviar correos al mismo tiempo. Para evitar retrasos, agregue retrasos. Si desea hacerlo en tiempo de ejecución, haga un bucle while esa condición es detectar que la lista para enviar correo no es null. al mismo tiempo, agregue la dirección de correo electrónico a la lista cuando reciba la dirección de correo electrónico. Esta no es la mejor manera, por supuesto, pero resuelve el problema.

-2
windowsboy111 4 nov. 2019 a las 13:45

Tengo la respuesta. Puedo hacer otro programa diferente de ese sitio web que se ejecutará en segundo plano y comprobará los artículos más de 5000 vistas que no están correos y enviarlo por correo electrónico a los usuarios suscritos. Pero tengo otra pregunta que ¿podemos ejecutar un proceso en segundo plano en AWS?

0
Mr. Explorer explorer 4 nov. 2019 a las 14:05