这是我的问题
我有三个架构
var UserSchema = new Schema({
username:String,
email:String,
hashed_password:String,
salt:String,
shop_id:{type:Schema.Types.ObjectId,ref:'Shop'},
})
var ShopSchema = new Schema({
owner_id:{type:Schema.Types.ObjectId,ref:'User'},
owner_real_id:String,
owner_real_name:String,
owner_real_location:String,
shop_name:String,
sell_product_ids:[Schema.Types.ObjectId],
})
var ProductSchema = new Schema({
})
有必要注册userschema以使用该应用程序,但除非用户想要出售某些内容,否则无需注册shopschema。但是,当用户注册shopchema时,我需要使用商店的_id更新userschema,
所以这就是我所做的
你可以看到我三次查询数据库,所以我想知道这是否可以在一个查询中完成,以节省时间,如
Shop.create(regist_data,function(){
//update the user collection here
})
万一你想知道为什么我需要这个,因为我使用'passport'来登录用户,我想在req.user中通过商店的_id访问ProductShcema,否则每次我想访问ProductShcema我想找到商店的_id然后得到属于商店_id的产品。
如果你有更好的解决方案,请告诉我。谢谢!!!
答案 0 :(得分:0)
这是我想出来的
Shop.create(regist_data,function(err,shop){
console.log('shop = '+shop);
User.findByIdAndUpdate(req.user.id,{ $set: { shop_id: shop._id }},{new:true},function(err,data){
if(err){
console.log(err)
}
console.log('new user = '+data);
})
})
它创建商店文档并更新用户集合,它适用于我。