【问题标题】:How to compare a JSON object and a Waterline model instance?如何比较 JSON 对象和 Waterline 模型实例?
【发布时间】:2014-10-21 17:11:17
【问题描述】:

注意:我还在 Waterline 存储库上为此打开了一个 issue,但没有比我的解决方法更简单的解决方案。

我有一个包含所有默认属性的用户模型(例如createdDatemodifiedDate)和一些自定义属性,如emailAddresspassword(在toJSON() 中被抑制)等以及一些其他关联与其他型号。

将由 JSON 格式的用户模型实例组成的控制器响应与 Waterline 模型实例进行比较的正确方法是什么?

例如,此解决方法有效:

request
  .get('/user/1')
  .end(function (err, res) {
    expect(res.body).to.deep.equal(
      JSON.parse(JSON.stringify( // Workaround for toJSON not stringifying dates
        _.cloneDeep( // Workaround for associations being lost
          testUser.toJSON() // `testUser` is a Waterline model instance that should be equivalent to the requested data (`/user/1`)
        )
      )) 
    );
    done();
   });

但我尝试过的几乎所有其他方法都没有;关联丢失(cloneDeep() 解决此问题)或字符串化日期与 Date 对象进行比较(JSON.parse(JSON.stringify()) 解决此问题)。

有没有更好的方法将 JSON 与 Waterline 模型实例进行比较?也许是一些内置的实用程序?

【问题讨论】:

    标签: javascript json node.js sails.js waterline


    【解决方案1】:

    使用JSON schema怎么样?

    【讨论】:

    • 不确定这是否是必要的,因为架构已经由 Waterline 定义过一次,它必须已经具有执行此操作所需的逻辑,我只是​​还没有找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2013-06-11
    • 2019-10-12
    • 2011-01-31
    • 2017-11-29
    相关资源
    最近更新 更多