【问题标题】:Add key value pair data in mongoose node js在猫鼬节点js中添加键值对数据
【发布时间】:2018-05-03 08:50:45
【问题描述】:

我在 Mongoose 中有一个如下所示的架构:

const SocketDetailsUserSchema = new mongoose.Schema({
    userId: String, 
    socketValue:  [{
       id: String,
       data : String     
     }], 
    isDeleted: Boolean,
    dateCreated: Date,
    updateAt: Date
});

我想在键值对中以数组格式插入socketValue的数据。应该是这样的,

{
    "_id" : ObjectId("5a12809c7f7afb1e3626857f"),
    "userId" : "59eee19696fe6560cd54a081",
    "socketValue" :  [{"id":"5a05855b10600e4aa5b3a48e" , "value" : "123" }],[{"id":"5a0ae037a90746c249b6c1f7" , "value" : "456" }],
    "isDeleted" : false 
    "__v" : 0
}

这是猫鼬数据格式。

我怎样才能像这样在猫鼬中插入数据? 我也很困惑,我应该如何从邮递员发布数据以在其中插入数据?

【问题讨论】:

  • 你需要改变 socketValue.data 属性吗?如果不是,可以将其重命名为"value"。顺便说一句,您的 socketValue 应该只是一个对象数组,而不是多个数组
  • 您是否得到更改以尝试以下答案?请尝试对答案提供反馈。当前答案对您不起作用吗?这将有助于更好地了解您的要求,并有机会改进答案或提供新的答案。
  • 下面的答案不起作用
  • @DaminiSuthar,您是要插入新的 SocketDetailsUser 文档,还是要在现有 SocketDetailsUser 的 socketValue 子文档中插入新的键值对?
  • 我想在文档中添加包含键值对值的新文档数据。

标签: node.js mongodb reactjs mongoose


【解决方案1】:

我认为您当前的结构很好,只需添加_id: false 以避免在socketValue 中添加自动生成的_id。喜欢

socketValue:  [{
   id: String,
   data : String,
   _id: false
 }],

对于这个结构数据将存储如下:

"socketValue" :  [{"id":"5a05855b10600e4aa5b3a48e" , "value" : "123" },{"id":"5a0ae037a90746c249b6c1f7" , "value" : "456" }]"

然后您可以轻松更新或添加新的socketValue。我认为这个[{..},{..},{..}] 是更好的结构而不是[[{..}][{..}]] 这个结构。

对于这种结构,邮递员的请求正文应该包含类似的内容。

{
    "userId" : "59eee19696fe6560cd54a081",
    "socketValue" :  [{"id":"5a05855b10600e4aa5b3a48e" , "value" : "123" },{"id":"5a0ae037a90746c249b6c1f7" , "value" : "456" }]",
    "isDeleted" : false 
}

在你的服务器端代码中使用 like

var newSocket = new Socket(req.body); // assume your model name is Socket
newSocket.save();

【讨论】:

    【解决方案2】:

    你的邮递员输入数据应该是原始的 json 格式

    {
        "userId" : "59eee19696fe6560cd54a081",
        "socketValue" :  [{"id":"5a05855b10600e4aa5b3a48e" , "value" : "123" },{"id":"5a0ae037a90746c249b6c1f7" , "value" : "456" }]",
        "isDeleted" : false 
    } 
    

    您的服务器代码

    var insertDoc = new collectionname(details);
    inserDoc.save(function (err) {
        if (err) {
            //callback err
        } else {
            //callback result
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 2022-01-26
      • 2020-06-03
      • 2015-11-19
      • 2018-12-29
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      相关资源
      最近更新 更多