在mongoose节点js中添加键值对数据

时间:2017-11-20 07:24:18

标签: node.js mongodb reactjs mongoose

我在Mongoose中有一个如下所示的模式:

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

我想以数组格式在key value对中插入socketValue的数据。这应该是什么样的,

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

这是猫鼬数据格式。

如何在像这样的猫鼬中插入数据? 我也很困惑,我应该如何从邮递员发布数据到这里插入数据?

2 个答案:

答案 0 :(得分:0)

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

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 
}

并在您的服务器端代码中使用类似

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

答案 1 :(得分:0)

您的邮递员输入数据应为原始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
    }
});