【问题标题】:saving in the database variable as ObjectID() MongoDB, NodeJS将数据库变量保存为 ObjectID() MongoDB、NodeJS
【发布时间】:2017-10-14 04:41:57
【问题描述】:

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

当将 id 添加到数组时,我将整个可变板 JSON 发送到执行函数 findOneAndUpdate 的 nodejs API。这是问题,因为在保存后这个数组不是 Author 中的 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 () {
    })
}

【问题讨论】:

    标签: json node.js mongodb


    【解决方案1】:

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

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

    【讨论】:

    • 嘿,你能扩展答案吗,如果我在一个 json 中发送整个电路板,你的意思是我已经将 id 推送到数组,然后将其转换为字符串,稍后我必须发送到 mongodb?你能解释一下你的答案吗??
    • 我不认为我理解你的问题,但我猜你得到了一个带有 id 的字符串,你想将它作为 ObjectID 保存到数据库中。为此,您必须使用 new new mongoose.Types.ObjectId("string"); 将字符串转换为 ObjectID;然后保存到数据库中。
    • 是的,一切正常,但我发送数组 id 的作者,例如 var Author = ['id1', 'id2', 'id3'] 并且我希望这所有的 id 都是 objectId,我们可以这样做吗? ?
    • 是的,只需使用 new mongoose.Types.ObjectId("string"); 将每个 id 转换为对象 id;
    猜你喜欢
    • 2021-03-10
    • 2016-02-26
    • 2019-11-03
    • 1970-01-01
    • 2017-05-12
    • 2021-06-20
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多