验证数据并将其保存到数据库以供实时应用程序使用的正确方法


Proper way to validate data and save it to db for realtime app

例如,我基于laravel+node.js服务器构建聊天应用程序。
创建新消息的最佳主意是什么:

  1. 向服务器发出 msg ->验证它并通过 node 将其添加到数据库中.js -> 将 msg 返回给所有用户
  2. 使用 ajax 在 laravel 中制作 api 进行验证和 db ->(我认为这不是最好的主意)
  3. 在 laravel 中进行 api 以进行验证,db -> 向服务器发出 msg> 节点中的请求.js向 laravel 中的 API 发出 -> 将 msg 返回给所有用户
  4. 其他?

我会这样做:

1 - 使用 Node 验证 msg.js并在有效时立即广播。

您可以使用 Node.js 事件和事件发射器,并对每个新消息做出反应。同样使用这种方法,您将在有效后立即将消息广播给所有用户。

2 - 将经过验证的消息保存到通过节点调用 Laravel API 的数据库.js

一旦您的消息被广播,现在您可以通过在 Node.js 应用程序中调用 Laravel API 保存到数据库。

var events = require('events');
var eventEmitter = new events.EventEmitter();
function saveToDb() {
  // call to api here
}
function validate(msg) {
  //validate msg
  return valid;
}

eventEmitter.on('msgBroadcasted', saveToDb);
eventEmitter.on('msgBroadcasted', anotherFunction);

socket.on('new message', function (data) {
  if (!validate(data)) { return false }
  socket.broadcast.emit('new message', {
    username: socket.username,
    message: data
  });
  return eventEmitter.emit('msgBroadcasted');
});