将数据库变量保存为ObjectID()MongoDB,NodeJS

时间:2017-10-13 19:34:36

标签: json node.js mongodb

我创建了在给定卡的数组中添加people_id的函数。但是有问题是插入的id总是不作为objectId(),我只需要将它保存为objectId。

当id添加到数组i时,我将整个变量板JSON发送到nodejs API,其中执行函数findOneAndUpdate。这是问题,因为保存后此数组不是作者中的objectID。有人能告诉我怎么做吗?

JSON板

{
"_id" : ObjectId("59e096a7622a3825ac24f343"),
"name" : "1",
"users" : [ 
    ObjectId("59cd114cea98d9326ca1c421")
],
"lists" : [ 
    {
        "list" : "1",
        "cards" : [ 
            {
                "name" : "2",
                "Author" : [ 
                    "59df60fb6fad6224f4f9f22d", 
                    "59df60fb6fad6224f4f9f22d", 
                    "59df60fb6fad6224f4f9f22e"
                ]
            }, 
            {
                "name" : "3",
                "Author" : []
            }
        ]
    }, 
    {
        "list" : "fea",
        "cards" : [ 
            {
                "name" : "card",
                "Author" : []
            }
        ]
    }
],
"__v" : 0 }

路由器:

 router.post('/add/member', function (req, res, next) {
  console.log(req.body)
  Board.findOneAndUpdate({ _id: req.body._id },
    {
      $set: {
          lists : req.body.lists
      }
    },
    {
      upsert: true
    },
    ((cards) => {
      res.send(cards)
    })
  )
});

模型:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var BoardSchema = new Schema({
  name: { type: String, maxlength: 20 },
  lists : { type: Array },
  users : [{ type : Schema.Types.ObjectId, ref: 'User' }],


});

module.exports = mongoose.model('Board', BoardSchema);

这里有添加人的功能

    $scope.addMemberToCard = (indexList, indexCard, member) => {
    $scope.board.lists[indexList].cards[indexCard].Author.push(member);
    console.log(    $scope.board.lists[indexList].cards[indexCard].Author)

    return ApiService.staff.addMemberToCard($scope.board).then(function () {
    })
}

1 个答案:

答案 0 :(得分:0)

您可以使用mongoose Types ObjectID方法,然后将发送的字符串转换为ObjectID。

const id = new new mongoose.Types.ObjectId(Author);