Javascript 模型w/帆/水线中的弦阵列

Javascript 模型w/帆/水线中的弦阵列,javascript,sails.js,waterline,Javascript,Sails.js,Waterline,sails/waterline是否提供了一种声明性的方式来强制我的模型中数组的元素为string类型?还是我必须编写代码来执行此验证?据我所知,在模型声明中无法执行此操作。但是,您可以在“beforeValidate”回调中轻松完成它 如果您在代码段的注释中注意到,在生命周期回调中向回调传递任何内容都会触发错误,因此您只需要这一小段代码就可以验证数组是否只包含字符串: beforeValidate: function (values, cb) { values.arrOfStrings.f

sails/waterline是否提供了一种声明性的方式来强制我的模型中数组的元素为string类型?还是我必须编写代码来执行此验证?

据我所知,在模型声明中无法执行此操作。但是,您可以在“beforeValidate”回调中轻松完成它

如果您在代码段的注释中注意到,在生命周期回调中向回调传递任何内容都会触发错误,因此您只需要这一小段代码就可以验证数组是否只包含字符串:

beforeValidate: function (values, cb) {

  values.arrOfStrings.forEach(function(str) {
    if (typeof(str) != "string") {
      cb("err: arrOfStrings must contain only strings");
    }
  }

  cb()
}

据我所知,在模型声明中没有这样做的方法。但是,您可以在“beforeValidate”回调中轻松完成它

如果您在代码段的注释中注意到,在生命周期回调中向回调传递任何内容都会触发错误,因此您只需要这一小段代码就可以验证数组是否只包含字符串:

beforeValidate: function (values, cb) {

  values.arrOfStrings.forEach(function(str) {
    if (typeof(str) != "string") {
      cb("err: arrOfStrings must contain only strings");
    }
  }

  cb()
}

这似乎可以通过向模型中添加自定义类型(如中所述)来实现:


需要自定义验证代码,但至少这种方法与验证引擎配合使用,并允许在模型中进行声明性验证

这似乎可以通过向模型中添加自定义类型(如中所述)来实现:


需要自定义验证代码,但至少这种方法与验证引擎配合使用,并允许在模型中进行声明性验证

请注意,您使用的是异步的
forEach
,因此可能会调用这两个回调。JS引擎将继续在forEach上调用
cb()
,比方说,数组中的最后一项触发了不等式--
cb
现在被调用两次。因此,如果希望引擎在迭代完成之前一直停留在迭代中,请将其重构为一个
for(i)
循环。请注意,您使用的是异步的
forEach
,因此可能会调用这两个回调。JS引擎将继续在forEach上调用
cb()
,比方说,数组中的最后一项触发了不等式--
cb
现在被调用两次。因此,如果您希望引擎在迭代完成之前一直停留在迭代中,请将其重构为一个
for(i)
循环?每次使用时我都需要检查类型:/我无法使用数组/其他类型。我必须使用
type:json
并使用类型验证器。我也不能使用minLength、maxLength等。您使用的水线版本是什么?我使用的是水线v0.13.5。需要一些帮助,如果你能检查这个。数组类型有点假不是吗?每次使用时我都需要检查类型:/我无法使用数组/其他类型。我必须使用
type:json
并使用类型验证器。我也不能使用minLength、maxLength等。您使用的水线版本是什么?我使用的是水线v0.13.5。需要一些帮助,如果你能检查这个。