Mongoose中的动态架构字段

时间:2016-11-15 01:51:40

标签: node.js mongodb mongoose

我有一个Schema,我在其中存储两个用户之间的关系。这些关系中的每一个都具有用户特定数据我很好奇是否可以按照以下方式做点什么:

{
    users: Array, 
    users[0]: {
        typing: Boolean,
        last_checked: Date
    },
    users[1]: {
        typing: Boolean,
        last_checked: Date
    }
}

而不是像这样存储信息:

{
    users: Array,
    data: Array
}

并在服务器上执行逻辑以查找索引等,如下所示:

 entry.data[entry.users.indexOf(id)].typing 

基本上只是试图找到一种体面的方式来为双人关系中的每个用户存储基于用户的信息。 对我来说最理想的情况是使用用户_id作为密钥,但您可以使用Mongoose吗?

1 个答案:

答案 0 :(得分:0)

我建议你创建一个包含用户数据的数组。在这里,我确实将数组的大小限制为两种关系。

    DataSchema = {
       typing: Boolean,
       last_checked: Date,
    }

    UserSchema = {
       relationship: {
          type: [DataSchema],
          validate: [
             () => val.length <= 2,
            '{PATH} exceeds the limit of 2 relationship',
          ],
       }
    }

访问数据:

// User 1 data
entry.relationship[0]

// User 2 data
entry.relationship[1]

// User 1 _id you can use
entry.relationship[0]._id