将对象推送到mongoDB中的数组

时间:2015-12-01 19:49:54

标签: arrays node.js mongodb

我试图将一个对象发送到我的模型中的数组,但每次我都这样做,数组仍然是空的。

我将对象传递给后端,它到达此处:

var addFavoriteRecipe = function(req, res){
    if(req.user){
        console.log(req.body);
        userModel.User.find({_id: req.user._id}, {$push :{favoriteRecipes: {name: req.body.alias, _id: req.body._id}}}, function(err){
            if(err){
                res.send(err);
            }else{
                res.send("success!");
            }
        });
    }else{
        var sendBackError = {err: true, message: "You are not logged in."}
        res.send(sendBackError);
    }
}

控制台登录req.body显示我传回的所有数据,并且有两个字段我试图推入阵列。

这是我的模特:

var userSchema = mongoose.Schema({
  username: {
      type: String,
    required: true,
    unique: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  friendsList: {
    type: Array,
  },
  favoriteRecipes: {
    type: Array,
  }
});

我已经玩弄了这些代码,但我真的很想知道应该从哪里开始。我想在我的模特身上看到它,但我并不完全确定。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式为对象数组定义模型:

favoriteRecipes: { type : Array , "default" : [] }

 userModel.User.find(
   {_id: req.user._id}, 
   { $push : {favoriteRecipes: {name: req.body.alias, _id: req.body._id}}},
   function(err){
            if(err){
                res.send(err);
            }else{
                res.send("success!");
            }
 });

但是,问题似乎在这里:

find

您正在使用update,需要将其更改为 userModel.User.update( {_id: req.user._id}, { $push : { favoriteRecipes: {name: req.body.alias, _id: req.body._id}}}, function(err){ if(err){ res.send(err); }else{ res.send("success!"); } });

.htaccess