我正在使用Meteor和collection2,我有一个看起来像这样的数组:
productTypes = ["string1", "string2", "string3", {Other: "test"}]
基本上阵列中有0到7个字符串,其他:“测试”可能存在也可能不存在
所以我正在尝试制作一个处理该案例的模式。有没有办法告诉它数组中会有字符串和对象?
我试过
const residentSchema = new SimpleSchema({
productTypes: {type: [String, Object], optional: true, blackbox: true},
})
但这显然不会起作用,因为它期待一个String和一个Object。有谁知道我怎么能做这个工作?提前致谢
修改
我现在用这种格式存储它:
productTypes = {list:[“string1”,“string2”,“string3”],其他:“test”}
但是当我添加这样的架构时:
const productTypeSchema = new SimpleSchema({
list: {type: Array},
other: {type: String}
})
const residentSchema = new SimpleSchema({
productTypes: {type: productTypeSchema},
})
我的应用程序崩溃了。当我删除行列表:{type:Array}时没关系。
现在允许Array作为SimpleSchema的值吗?
答案 0 :(得分:1)
使用collection2,您可以拥有一组基元或一组对象,但不能使用混合数组。仅仅是一个造型pov它真的很乱。
我建议您重构数组,而不是:
var person = _context.People.AsQueryable()
.Single(p => p.Name == "Punny");
var ids = person.InterestingIds;
var query = _context.Interests.AsQueryable()
.Where(i => ids.Contains(i.Id)).ToList();
var result = new
{
person.Name,
Interest = query
};
例如:
productTypes = ["string1", "string2", "string3", {Other: "test"}]