0

这是我的问题

我有三个架构

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({


})

必须注册用户模式才能使用该应用程序,但除非用户想卖一些东西,否则无需注册商店模式。但是,当用户确实注册了 shopschema 时,我需要使用商店的 _id 更新 usersschema,

所以这就是我所做的

  1. 在商店集合中创建文档
  2. 找到商店_id
  3. 更新用户集合

如您所见,我查询了数据库三次,所以我想知道这是否可以在一个查询中完成以节省时间

Shop.create(regist_data,function(){
    //update the user collection here
})

以防万一你想知道我为什么需要这个,因为我使用“护照”登录用户,并且我想通过 req.user 中商店的 _id 访问 ProductShcema,否则每次我想访问我想要的 ProductShcema找到店铺的_id,然后得到属于店铺_id的产品。

无论如何,如果你有更好的解决方案,请告诉我。thanx !!!

4

1 回答 1

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);
 })
})

它创建商店文档并更新用户收藏,它适用于我。

于 2012-10-17T08:32:49.350 回答