Sails.js 在Sails中使用数组属性类型

Sails.js 在Sails中使用数组属性类型,sails.js,waterline,Sails.js,Waterline,我希望在我的应用程序中使用sails属性类型“array”,但我在任何地方都找不到相关文档 我想做以下几点: module.exports = { attributes : { images: { type: ['string'] }, location: { type: ['float','float'] } } } 图像是一个数组,它将保存图像URL列表,位置将保存2个浮动。这在赛欧公司行吗?否则我怎么才能让它工作。 谢谢 PS:我只使用MongoDB据我所

我希望在我的应用程序中使用sails属性类型“array”,但我在任何地方都找不到相关文档

我想做以下几点:

module.exports = {
 attributes : {
  images: {
   type: ['string']
  },
  location: {
   type: ['float','float']
  }
 }
}
图像是一个数组,它将保存图像URL列表,位置将保存2个浮动。这在赛欧公司行吗?否则我怎么才能让它工作。 谢谢


PS:我只使用MongoDB

据我所知,您只能这样指定它:

module.exports = {
    attributes : {
        images: {
            type: 'array'
        },
        location: {
            type: 'array'
        }
    }
}

请参见

sailsjs提供了一个函数来解决您的问题,您可以尝试以下方法

module.exports = {
 attributes : {
  images: {
   type: 'string'
  },
  location: {
   type: 'json'
  }
 }
}

从Sails 1.0开始,不再支持类型阵列

不再支持“数组”类型。若要在模型中使用此类型,请更改 将
type
设置为支持的类型之一,并将
columnType
属性设置为列 模型适配器支持的类型,例如{type:'json',columnType:'array'}

解决方案一

设置属性以存储图像数组和位置数组

module.exports = {
  attributes : {
    images: {
      type: 'json'
      columnType: 'array'
    }
    location: {
      type: 'json'
      columnType: 'array'
    }
  }
}
解决方案二

一个更优雅的解决方案是设置一个对象来存储文件名和位置数据

module.exports = {
  attributes : {
    images: {
      type: 'json'
    }
  }
}
然后在控制器中,您将对象属性存储为数组

let imageData = {
  filename: ["image1.jpg", "image2.jpg", "image3.jpg"],
  location: [154.123123, 155.3434234, 35.12312312]
};

Images.create({images:imageData});

将数据存储到json对象时存在的一些问题是,“image1.jpg、image2.jpg、image3.jpg”之类的字符串将存储在MongoDb中,不用担心。。。doh。请确保在发布时您可能需要拆分数据。对于sails 1.0,拆分(','),对于阵列,您可以尝试我仅用于共享的这种方式。 此外,您还可以在更新前替换并处理本机查询(),并删除水线更新的属性。希望这对你有帮助

变体:
{
键入:“json”,
columnType:'数组',
自定义:(值)=>
{
/*
[
代码:唯一,字符串
名称:字符串,最大长度[30]
成本:数量有限
价格:数量有限
默认值:布尔值
]
*/
返回i数组(值)
&&_u.every(值,(变量1)=>
{
return_uu.countBy(值,(variant2)=>
{
返回variant2.code==variant1.code?'eq':'uneq';

}).eq请为您的答案添加简短的解释,以供将来的访问者使用。我不确定这是如何工作的。
图像
属性应该是一个字符串数组,但您只有
字符串
。此外,从位置的语法来看,这指定它的值可以是
浮点
浮点
对不起,我是just edditing my post以解决您的问题类型“array”不再受支持。若要在模型中使用此类型,请将
type
更改为受支持的类型之一,并将
columnType
属性设置为模型适配器支持的列类型,例如,{type:'json',columnType:'array'}