验证来自客户端应用程序的引用值

时间:2017-06-16 13:18:03

标签: database-design mongoose mongoose-schema

我正在使用mongodb并尝试找到一个解决方案来提前创建数据,供用户选择每个接口只使用一个查询(一个用于用户的选择界面,另一个用于显示所选数据)。我想到的是创建两个集合:一个用于可以选择的数据,另一个用于存储选定的数据。我们以国家和城市为例。我有一个国家集合,如:

{
    name: { type: String },
    cities: [{
        name: { type: String }
    }]
}

使用此集合输入国家和城市数据。当用户创建配置文件时,他/她将能够使用选择框仅选择这些值。然后它将保存在另一个集合中:

{
    name: { type: String },
    surname: { type: String },
    addresses: [{
        country: { type: String },
        city: { type: String },
        description { type: String }
    }]
}

现在我想到的问题是如何确保恶意用户无法发送不同的国家或城市名称并使数据不一致。我希望能够使用用户的地址数据更新国家和城市名称。我也想知道这是一种正确的方式还是一种反模式?

1 个答案:

答案 0 :(得分:0)

使用枚举

var cities = ['LA', 'New York', 'Washington', 'Orlando']

var s = new Schema({
    name: { type: String },
    cities: [{
        name: { type: String, enum: cities }
    }]
})


var personSchema = {
    name: { type: String },
    surname: { type: String },
    addresses: [{
        country: { type: String },
        city: { type: String, enum: cities },
        description { type: String }
    }]
}

Check mongoose enum documentation