javascript - SailsJS 在创建具有关联的对象时触发更新

标签 javascript socket.io associations sails.js waterline

我正在使用 Sails v0.10.5。

我创建了三个模型,它们之间存在关联。存在一个Candidate 模型、一个Evaluator 模型和一个Rating 模型,评估者通过该模型对候选人进行评分。我正在使用 Waterline 关联自动跟踪从 RatingEvaluatorCandidate 的外键。

我还使用 Blueprint 自动处理这些模型的所有 CRUD 路由。

不幸的是,每当我通过 Blueprint 使用诸如 http://localhost:1337/rating/create? rating=4&comment=Great&evaluator=3&candidate=2 之类的 url 创建新候选时,除了触发之外预期的 CREATE,sails 也会返回并调用 2 个 UPDATE,在此期间正在设置每个 CandidateEvaluator 的外键。

这导致我的应用程序前端出现问题,因为它接收到 UPDATE 事件而不是 CREATE 事件,并且没有必要的上下文来正确处理来自服务器的新数据。

任何解决此问题的建议都会很有帮助!

以下是 Waterline 模型:

/api/models/Candidate.js:

module.exports = {
  schema: true,
  attributes: {
    name: {
      type: 'string',
      required: true
    },
    status: {
      type: 'string',
      required: true
    },
    role: {
      type: 'string',
      required: true
    },
    ratings: {
      collection: 'rating',
      via: 'candidate'
    }
  }
};

/api/models/Evaluator.js:

module.exports = {
  schema: true,
  attributes: {
    name: {
      type: 'string',
      required: true
    },
    title: {
      type: 'string',
      required: true
    },
    role: {
      type: 'string',
      required: true
    },
    ratings: {
      collection: 'rating',
      via: 'evaluator'
    }
  }
};

/api/models/Rating.js:

module.exports = {
  schema: true,
  attributes: {
    rating: {
      type: 'integer',
      required: true
    },
    comment: {
      type: 'string',
      required: false
    },
    evaluator: {
      model: 'evaluator',
      required: true
    },
    candidate: {
      model: 'candidate',
      required: true
    }
  }
};

最佳答案

我遇到了类似的问题。您可以在更新事件中创建一个过滤器来检查某些变量是否已更新,如果更新了,则调用一些影响您前端的函数。

关于javascript - SailsJS 在创建具有关联的对象时触发更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515608/

相关文章:

javascript - Yabble入门--浏览器端CommonJS模块加载

node.js - socket.io 一页多聊天

orm - 删除sequelize返回值中的连接表数据

ruby-on-rails - 通过 Rails ActiveRecord Association 调用类方法

ruby - 通过 has_many 设置我的模型

javascript - 在 Angular 5 中,如何在没有事件的情况下让组件监听并等待来自另一个组件的数据?

javascript - 用 .innerText 缓慢更新样式表的内容

php - 传递 Javascript 数组 -> PHP

node.js - 扩展 NodeJS 聊天室 - 在 Redis 中存储连接状态

javascript - socket.io 仅向房间 A 和 B 中的用户广播