在猫鼬节点js中添加键值对数据
Posted
技术标签:
【中文标题】在猫鼬节点js中添加键值对数据【英文标题】:Add key value pair data in mongoose node 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 子文档中插入新的键值对?
我想在文档中添加包含键值对值的新文档数据。
【参考方案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
);
【讨论】:
以上是关于在猫鼬节点js中添加键值对数据的主要内容,如果未能解决你的问题,请参考以下文章