【问题标题】:Store and parse array in model in Waterline在 Waterline 中的模型中存储和解析数组
【发布时间】:2017-11-09 11:37:11
【问题描述】:

使用最新版本的 Waterline 0.13.1-6 独立。

此版本中不再存在 array 类型。所以我假设现在存储数组的方法是使用JSON 类型。

我的模型样本Model:

  attributes: {
    someArray: { type: 'json' }
  }

问题:在Model 的实例上,model.someArray 现在是一个字符串。每次我请求获取数组中的值时,我都应该 JSON.parse 它。这很不方便,而且很明显会导致错误。

新的 Waterline 中是否有一种内置方法可以使这变得干净(自动解析 JSON 字段...)?

【问题讨论】:

  • 你是只得到字符串格式的数组字段,还是整个响应?
  • 只有数组字段(实际上是我定义的任何 JSON 字段);模型对象本身(和非 JSON 属性)工作正常。

标签: arrays json sails.js waterline


【解决方案1】:

您可以按照您的建议使用 JSON。无需解析它,这是在您进行元获取或查找时自动完成的。你可以这样做

YourModel.create({someArray: [1,2,3]}).meta({fetch: true}).then( out => { console.log(out.someArray[0]); //1; });

我会有一些其他的识别属性来找到它,比如 myRef: {type: 'string'}

那你就可以了

YourModel.find({myRef: 'something'}).limit(1).then( out => { console.log(out[0].someArray[1]); //2 });

【讨论】:

  • 很好的答案!旁注:从最新的 Sails v1 版本(和 waterline@0.13.1-4)开始,您现在还可以使用 .fetch() 作为 .meta({fetch:true}) 的快捷方式
  • 很抱歉回答迟了,但我不明白。文档说此选项是在进行更新时返回修改后的值。使用 find() 时,它没有说明解析 JSON 字段的任何内容......除此之外:我的模型已经创建(没有元提取)。如何使用 find 正确读取他们的 JSON 字段?
  • 好吧,看来我的基础中的一些值被编码为包含 JSON 的字符串......我猜是来自旧存储的错误。无论如何,我将其标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多