因为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