我希望在我的应用中使用sails属性类型'array',但我找不到任何文档。
我想做以下事情:
module.exports = {
attributes : {
images: {
type: ['string']
},
location: {
type: ['float','float']
}
}
}
图像是一个数组,它将保存图像网址列表,位置将保存2个浮点数。这会在帆船上工作吗?另外,我怎样才能让它发挥作用。 感谢
PS:我只与MongoDB合作
答案 0 :(得分:4)
sailsjs提供了解决问题的功能,您可以试试这个
g_temp=zeros(length(perms1),1);
答案 1 :(得分:3)
据我所知,你只能这样指定:
module.exports = {
attributes : {
images: {
type: 'array'
},
location: {
type: 'array'
}
}
}
答案 2 :(得分:1)
从Sails 1.0开始,不再支持 array 类型。
不再支持“数组”类型。要在模型中使用此类型,请更改 将
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。确保在发布时可能需要拆分数据.split(',')
。
答案 3 :(得分:0)
对于Sails 1.0,对于数组,也许您可以尝试这种方式,我只是用于共享。 您也可以在更新之前替换并处理本机query(),并删除属性以通过水线进行更新。希望对您有帮助。
variants:
{
type: 'json',
columnType: 'array',
custom: (value) =>
{
/*
[
code : unique, string
name : string, maxLength[30]
cost : number, isFinite
price : number, isFinite
default : boolean
]
*/
return _.isArray(value)
&& _.every(value, (variant1) =>
{
return _.countBy(value, (variant2) =>
{
return variant2.code == variant1.code ? 'eq' : 'uneq';
}).eq <= 1
&& _.isString(variant1.name) && variant1.name.length < 30
&& _.isNumber(variant1.cost) && _.isFinite(variant1.cost)
&& _.isNumber(variant1.price) && _.isFinite(variant1.price)
&& _.isBoolean(variant1.default);
});
},
},