Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongoose节点js中添加键值对数据_Node.js_Mongodb_Reactjs_Mongoose - Fatal编程技术网

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

Node.js 在mongoose节点js中添加键值对数据,node.js,mongodb,reactjs,mongoose,Node.js,Mongodb,Reactjs,Mongoose,我在Mongoose中有一个模式,如下所示: const SocketDetailsUserSchema = new mongoose.Schema({ userId: String, socketValue: [{ id: String, data : String }], isDeleted: Boolean, dateCreated: Date, updateAt: Date }); 我想以数组

我在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
}
这是mongoose数据格式

我怎样才能像这样在mongoose中插入数据?
我还很困惑,我应该如何发布来自postman的数据以在其中插入数据?

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

socketValue:  [{
   id: String,
   data : String,
   _id: false
 }],
对于此结构,数据将存储为:

"socketValue" :  [{"id":"5a05855b10600e4aa5b3a48e" , "value" : "123" },{"id":"5a0ae037a90746c249b6c1f7" , "value" : "456" }]"
然后,您可以轻松地更新或添加新的
socketValue
。我认为这个
[{..},{..},{..}]
比这个结构更好

对于这种结构,postman请求主体应该包含like

{
    "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();

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

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