亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Mongoose:變量賦值

Mongoose:變量賦值

翻過高山走不出你 2022-06-09 11:05:57
這很簡單,所以如果你能找到一個重復的,請發布它(因為我不能)。所以我有一個從數據庫接收的對象,我想在代碼中設置一個等于簡單變量的值,而不是引用整個東西(注意 user.info 實際上是一個嵌套在里面的對象數組)。let bar = user.info.foo.bar;假設 bar (foo.bar) 未定義,但在模式中設置為字符串類型。我想將 bar (foo.bar) 分配給一個名為“foo”的字符串,因此(在我看來)邏輯上,我將 bar 設置為等于“foo”;bar = "foo";當我這樣做并記錄 bar 和實際值(user.info.foo.bar)時,我得到:console.log(bar); // "foo"console.log(user.info.foo.bar) // undefined為什么 bar 被定義但 user.info.foo.bar 卻沒有,即使它們彼此相等?user.info 沒有問題(已定義)。
查看完整描述

3 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

我想出了一個解決方法


我真正想要的是為 user.info.foo.bar 分配“foo”的值,而不是直接為它分配那個值。我可以通過使“bar”成為一個函數并將一個值傳遞給它并將 user.info.foo.bar 設置為該值來解決問題;


const bar = (value)=>{

  user.info.foo.bar = value;

  return value

}

如果我這樣做,我可以使用我想要的任何值調用 bar,并且 user.info.foo.bar 將等于該值,而無需直接將其設置為等于該值(這是我真正想要的)。


結果:


console.log(bar("foo")); // "foo"

console.log(user.info.foo.bar); // "foo"


查看完整回答
反對 回復 2022-06-09
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

為避免數據庫中原始對象發生突變,請先克隆它。解決方法如下:


let userInfo = {...user.info}

let bar = 'foo'

userInfo.foo.bar = bar

N/B:“bar”是一個新的內存地址,因此重新分配對數據庫中的“user.info”對象沒有影響。


查看完整回答
反對 回復 2022-06-09
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

當你分配


let bar = user.info.foo.bar;

bar 的值用 user.info.foo.bar 的當前值更新。. 當您更改 bar 的值時,它不會反映出來,因為我們沒有添加任何內容來修改 user.info.foo.bar 的值。


你可以做的是設置


user.info.foo.bar="foo";

let bar = user.info.foo.bar;


查看完整回答
反對 回復 2022-06-09
  • 3 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號