2016-11-28 42 views
1

我有两个模式一个是user.js的文件,用户模式等是product.js产品架构文件如何访问一个模型架构在另一个模型猫鼬数据库

在user.js的文件我的用户架构如下:

var userSchema = new Schema({ 
    firstname: { 
     type: String, 
     required: true 
    }, 
    lastname: { 
     type: String, 
     required: true 
    }, 
    password: { 
     type: String, 
     required: true 
    }, 
    mobileno: { 
     type: Number, 
     unique: true, 
     required: true 
    }, 
    facebookid: { 
     type: String 
    }, 
    userimage: { 
     type: String 
    } 
}); 

,我_id用猫鼬,自动递增模块来获取用户集合中自动增加用户id中重写自动生成。

而在product.js我的产品架构文件如下:

var productSchema = new Schema({ 
    userId: { 
     type: String, 
     required: true 
    }, 
    productName: { 
     type: String, 
     required: true 
    }, 
    productId: { 
     type: String, 
     required: true 
    }, 
    price: { 
     type: Number, 
     unique: true, 
     required: true 
    }, 
    prodcutImage: { 
     type: String 
    } 
}); 

当用户将集合添加新的产品,他将填补在产品架构中提到的所有领域。我想在产品收集中用户添加新产品时,验证用户收藏中是否存在输入的用户ID。 我试图访问userSchema.find方法productSchema预先保存勾

productSchema.pre('save', function (next) { 
    userSchema.findOne({'_id': userId}, function(err, user) 
    { 
     console.log(user); 
    }); 
} 

但它返回一个错误。有人可以帮我解决这个问题。

+0

路由器级中间件是什么错误? – sidgate

+1

看到正确的错误和帖子..我的想法是什么意思。 –

回答

2

你可以这样做

app.get('/user/:id', function (req, res, next) { 
     userSchema.findOne({'_id': userId}, function(err, user) 
    { 
     if(user){ 
      next() 
       }else{ 
        res.json("user id is not valid"); 
        } 
    });  
    }, function (req, res, next) { 
     // code to add your product in product schema 
    }) 

更多更好的办法是使用快递

+0

快递路由器级中间件是一个很好的替代品! –

相关问题