2015-12-22 21 views
0

我正在开发一个允许用户创建任务的项目,其他用户(服务提供者)可以为他们提供报价,然后让用户决定哪个服务提供者适合他们。Mongodb架构设计任务

这里的服务模式:

var ServiceSchema = new Schema({ 
    address: String, 
    quotations:[{ 
    service_provider:{type:mongoose.Schema.Types.ObjectId, ref:'User'}, 
    price: Number, 
    date: Date 
}], 
    customers :[{type:mongoose.Schema.Types.ObjectId, ref:'User', childPath:'services_need'}], 
}); 

,这里是用户模式

var UserSchema = new Schema({ 
    name:String, 
    password:String, 
    email:String, 
    phone:String, 
    token:String, 
    services_need:[{type: mongoose.Schema.Types.ObjectId, ref: 'Service'}], 
    services_provide:[{type: mongoose.Schema.Types.ObjectId, ref: 'Service'}], 
}); 

的问题是,是这里最好的做法?任何其他的设计规则我打破了? 另外,我是否需要保留用户在服务中的参考?

感谢

回答

0

你可以做这样的子文档关系没有任何问题。

你是什么意思的“我需要在用户持有参考”?请详细说明

+0

我的意思是用户需要持有该服务的参考资料吗? –

+0

看起来像您从服务中引用了用户,并引用了来自用户的服务(数组)。没有足够的信息让我告诉你,而我相信你的设计是对还是错。我没有看到你有什么问题。您可以轻松地“填充()”当前设计中的子文档。 – Jared