因爲setState方法是異步的,而一般不少時候在一個生命週期裏更新state後須要在另外一個生命週期裏使用這個state。前端
下面介紹幾個方法node
// 1 this.setState({}, () => { this.doSomething(); }); doSomething() { console.log(this.state); } // 2 使用setState // 其餘 this.setState((prevState, props) => { return { counter: prevState.counter + 1 }; });
因爲Object_id是對象,所以在比較的時候必定不能直接比較兩個ID是否相等,即不能if (a == b)
, 經過查閱官方的文檔,瞭解到能夠這樣用: if (a.toString() === b.toString())
react
在使用mongoose進行表關聯查詢的時候,我將查詢出來的數據在後端打印出來,可是發現打印不出來任何東西。ios
我還覺得是代碼寫錯了,應該一番資料的查閱,瞭解到真實的狀況是這樣的: "經過virual查詢出來的數據,打印出來是沒法看見的,由於它的類型是***(我也不知道)的,須要將它轉換爲對象,才能夠打印出來"。git
一樣,還有一個地方須要注意:es6
經過virtual查詢出來的數據,若是不對結果進行操做,那麼返回到前端的數據就是"_doc", 可是若是要對查詢的結果進行操做,此時操做的數據不是"_doc", 而是整個對象, 所以須要過濾一次(const docs = results.map(x => x._doc)
)。github
mongoexport --host localhost --db seed_crm --collection customers --type=csv --out customer.csv --fields firstname,middlenamae,lastname
// get axios.get('/xx', { params: { a, b, c, }, }); // schema function xx() { return { query: { a: Joi.... } }; } // post axios.post('/xx', { a, b, c, }); // schema function xx() { return { payload: { a: Joi } }; }
單從代碼的整潔度來說,這是一個很不錯的方式。mongodb
// 只是簡單的舉例 let results = []; const data = [1, 1, 2, 2, 3, 3]; data.forEach(x => { if (x === 2) { results.push(x); } }); // to this let results = []; const data = [1, 1, 2, 2, 3, 3]; results = results.concat(data.filter(x => x === 2));
超過2個await建議使用Promise.all()shell
const value1 = values[0]; const value2 = values[1]; // to this, 數組的解構 const [value1, value2] = values;
對於數組的幾個常見的方法,要使用return null 或者 return false
, 我知道這是什麼意思, 就是不太好表達出來。數據庫
因爲常常涉及到須要取對象的某某屬性值,可是該對象可能不存在某某值,所以就會致使報錯。故通常使用的辦法有兩個:
const defaultBy = (Person || {}).default; // 或者這樣的 const defaultBy = Person.default || '';
多使用ES6裏面的find方法,很好用的。
在mongoose的model裏面沒有某個字段,由於需求,須要向數據庫裏插入某個字段。而後查詢數據打印出來,能夠看見這個數據,可是在使用的時候,它的值都是undefined
, 後來才知道,這是mongoose的一個機制,須要在schame
裏面,將直接插入的那個字段給加上。
resolve函數裏面只能跟一個值,若是要resolve多個值,須要用對象包裹起來。
Promise.all須要全部的Promise都resolve或者reject, 若是隻有一部分完成了這兩個操做,那麼是會出問題的。
x={true} 與 x="true"
在子組件裏,獲得的數據結果是不同的。
請看這裏: JSX Boolean