带有字符串和对象的Meteor collection2数组

时间:2016-06-24 00:06:37

标签: meteor meteor-collection2 simple-schema

我正在使用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的值吗?

1 个答案:

答案 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"}]