防止多个帖子在react / mongoose中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止多个帖子在react / mongoose中相关的知识,希望对你有一定的参考价值。

我正在使用mongoose在reactjs / redux中开发应用程序。我有一个表格允许auth ppl添加评论文章,但如果用户点击10次1秒钟形式将发送10个请求..这是不好的。我怎么能阻止这个?假设用户点击按钮一次,然后他需要等待5秒钟才能发送另一条评论。

答案

对于前端部分,您可以为组件状态或redux添加时间戳,如该用户的lastPostTime,然后将其与当前时间进行比较,如果它小于5秒或您想要阻止帖子的其他时间范围,禁用该按钮。

这是一个虚构的组件示例:

class App extends Component {
  constructor() {
    super();
    this.state = {
      lastPostTime: null
    };
    this.handleCommentSubmit = this.handleCommentSubmit.bind(this);
    this.checkIfTimeoutPassed = this.checkIfTimeoutPassed.bind(this);
  }

  handleCommentSubmit(e) {
    if (this.checkIfTimeoutPassed()) {
      console.log('sent');
      this.setState({ lastPostTime: Date.now() });
    }
  }

  checkIfTimeoutPassed() {
    const postTimeOut = 5000;
    const { lastPostTime } = this.state;
    const timeSinceLastPost = Date.now() - lastPostTime;
    return !lastPostTime || timeSinceLastPost > postTimeOut;
  }

  render() {
    return (<button onClick={this.handleCommentSubmit}>Click me</button>);
  }
}

如果用户将破解前端限制,在后端进行类似的检查是有意义的。

以上是关于防止多个帖子在react / mongoose中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mongoose/Node 中同时渲染多个变量?

Mongoose - 对象之间的多重关系

Mongoose/Mongodb Aggregate - 对多个字段进行分组和平均

使用 mongoose 将多个不存在的文档插入 MongoDB

使用 mongoose 将多个不存在的文档插入 MongoDB

Mongoose – 将对象相互链接而不重复