产品未添加到我的收藏中

时间:2017-02-05 11:15:53

标签: node.js rest http express

在我的项目中我有2个型号:商店和产品,基本上每个商店都可以有多个产品,但每个产品都可以与1个商店相关,所以要建立我做过的模型:

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

我的产品是这样的

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

你们可以看到我在商店方面有参考,基本上我想要的是每次添加产品时我都会将该产品直接添加到商店(storeID),所以要做到这一点我把它添加到我的商店旁路:

func NewAssetHandler(mc my.Client) AssetHandler {
    return AssetHandler{mc}
}

我遇到了两个问题:当我进入我的产品路线时,我得到一个空阵列,我应该到达所有产品,我认为产品没有被添加到产品的模型中,第二个问题是:每个我将产品添加到我的商店,并用.populate查看我的所有商店我只能在产品数组中看到一个ID,我应该看到所有产品细节,我做错了什么?:S

1 个答案:

答案 0 :(得分:0)

将你的mongoose更新为4.8.1,因为4.7.6因为投射ID而错误。

然后转到你的lojas.js并在顶部要求mongoose。

用此

替换您的代码
        router.post('/:id/produtos',function(req,res){

        var queryObject = {_id : mongoose.Types.ObjectId(req.params.id)};
        Loja.findById(queryObject,function(err,loja){
                console.log(err);
          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);
          produto.save(function (err) {
            if(err){
              return res.status(500).json({Error:"Server Problem"})
            }
              loja.produtos.push(produto._id);

             loja.save(function(err){
            if(err){
              return res.status(500).json({Error:"Server problem"});
            }
             res.status(200).json({message: "product added"});
          });
          });

        })
    })