【发布时间】:2017-02-06 22:00:12
【问题描述】:
在我的项目中,我有 2 个模型:商店和产品,基本上每个商店都可以有多个产品,但每个产品可以与 1 个商店相关,所以为了构建模型我这样做了:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var lojasSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
nome: {
type: String,
required: true,
unique: true
},
descricao: {
type: String,
default: "No description for this store"
},
telefone:{
type:String,
},
password:
{
type: String, required: true
}
,
img: {
data: Buffer, contentType: String
},
imgNome: {
type: String
},
produtos: [
{ type: mongoose.Schema.ObjectId, ref: 'Produto' }
],
});
module.exports = mongoose.model('Loja', lojasSchema);
我的产品是这样的
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var produtoSchema = mongoose.Schema({
nome:{
type:String, required:true
},
stock:{
type:Number
},
descricao:{
type:String
},
categoria:{
type: String, required:true
},
tamanho:{
type: String, required:true
},
data:{
type: Date, default: Date.now
},
preco:{
type: Number,required:true, default: 0
}
});
module.exports = mongoose.model('Produto',produtoSchema);
正如你们所看到的,我在商店方面有参考,基本上我想要的是每次我添加产品时,我直接将该产品添加到商店(storeID),所以我将它添加到我的商店支线:
//adiciona um produto a uma loja especifica
router.post('/:id/produtos',function(req,res){
Loja.findById(req.params.id,function(err,loja){
if(!loja){
return res.status(404).json({Error:"Loja nao encontrada"});
}
if(JSON.stringify(req.body) == "{}")
{
return res.status(400).json({Error:"Your request is empty"});
}
var produto = new Produto(req.body);
loja.produtos.push(produto);
loja.save(function(err){
if(err){
return res.status(500).json({Error:"Server problem"});
}
res.status(200).json({message: "product added"});
});
})
})
我有两个问题:当我去我的获取产品路线时,我得到一个空数组,我应该把所有产品都放在那里,我认为产品没有被添加到产品的模型中,第二个问题是:每个当我将产品添加到我的商店并使用 .populate 查看我的所有商店时,我只能在 products 数组中看到一个 id,我应该看到所有产品详细信息,我做错了什么?:S
【问题讨论】: