我是JS,mongoDB和mongoose的新手。
我想尝试将一些文档字段复制到另一个文档。 之后我想删除原始文件。
这是我的mongoDB集合:
[
// twitter account
{ "_id" : "585bbba59659501d68f997ec",
"logIn" : "twitter" ,
"pollIds" : { "local" : [ ] , "facebook" : [ ] , "twitter" : [ ]} ,
"twitter" : { "username" : "xxxxx" ,
"displayName" : "xxxx yyyyy" ,
"token" : "" , //place for copied twitter token
"id" : "99999999999999999"} ,
"__v" : 0},
//facebook account connected with twitter and local
{ "_id" : "585bbba99659501d68f997ed",
"logIn" : "facebook" ,
"pollIds" : { "local" : [ ] , "facebook" : [ ] , "twitter" : [ ]} ,
"twitter" : { "username" : "xxxxx" ,
"displayName" : "xxxx yyyyy" ,
"token" : "tokentokentokentoken" , //token what i want to copy
"id" : "99999999999999999" ,
"dbId" : "585bbba59659501d68f997ec"} ,
"facebook": { "email" : "xx@xx.com" ,
"displayName" : "xxx yyy" ,
"token" : "facebooktoken" ,
"id" : "8888888888888888"} ,
"local" : { "password" : "local user password" ,
"email" : "ggg@ggg.com" , //email what i want to copy
"dbId" : "585bbbc29659501d68f997ee"},
"__v" : 0}
//local account
{ "_id" : "585bbbc29659501d68f997ee",
"logIn" : "local" ,
"pollIds" : { "local" : [ ] , "facebook" : [ ] , "twitter" : [ ]} ,
"local" : { "password" : "local password" ,
"email" : ""} , place for copied local email
"__v" : 0}
]
我尝试实现的是从FACEBOOK帐户断开TWITTER和LOCAL帐户。以下是我尝试这样做的方法:
删除TWITTER和LOCAL帐户分配 他们未定义
// local = undefined // // twitter = undefined //
我的问题是:在此之后我删除了LOCAL和TWITTER帐户,复制的字段也会消失。我想我只是复制了它的参考而不是它的价值。如果这就是我如何才能使这项工作?
我希望我的问题看起来并不凌乱。这是我在此的头一篇博文。 谢谢你的回答。
答案 0 :(得分:0)
所以Node中的Objects就是当你“复制”它们时(即var x = y),你实际上是在创建一个指向原始对象的指针。您可能想要做的是以下内容:
var newObj = {};
Object.assign(newObj, originalObj);
delete originalObj['somekey'];
那么它做的是它需要原始对象,将其深层复制到一个新对象(2个独立的内存位置),然后最后我使用delete来删除键(基本上将它们设置为undefined)
有关Object.assign:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
的详细信息,请参阅此内容