这是我的代码:
app.post('/ujfeladat', (req, res) => {
const {nev, tipus, szid} = req.body;
const hianyos = () => {
if(tipus === 'hianyos'){
return {rang: -1}
}
return
}
db('fl').insert({
nev: nev,
tipus: tipus,
szid: szid,
hianyos() //returns an error
}).returning('*')
.then(data => res.json(data))
.catch(err => console.log(err))
})Run Code Online (Sandbox Code Playgroud)
我该怎么做才能将rang属性添加到对象中tipus === 'hianyos'?
Jor*_*nev 13
这是你如何做到的:
// Will result in { foo: 'foo', bar: 'bar'}
const item = {
foo: 'foo',
... true && { bar: 'bar' },
... false && { falsy: 'falsy' },
}
console.log(item)Run Code Online (Sandbox Code Playgroud)
说明:
短路评估(true && {},false && {})将返回一个Object或一个Boolean false值.
在Object返回的情况下,其属性将被传播并分配给父对象.
在false返回的情况下,父对象不会被污染,因为ES6将false, undefined, null and etc值视为{}.因此,spread ...{}不会将任何属性分配给父对象.关于这方面的更多细节,你可以在这里找到.
这是你如何做到的:
db('fl').insert({
nev: nev,
tipus: tipus,
szid: szid,
...tipus === 'hianyos' ? { rang: -1 } : {}
})
Run Code Online (Sandbox Code Playgroud)
解释:
如您所见,三元运算符始终返回一个对象.
如果条件为真,则返回{ rang: -1 },否则返回空对象{}.
之后,我们展开...结果对象(来自三元操作),并将对象的属性分配给父对象.
如果没有任何属性,则不会分配任何内容,这是我们的目标.
代码示例:(有时是几行代码不是几千字的好)
// Will result in { foo: 'foo', bar: 'bar'}
const item = {
foo: 'foo',
... true ? { bar: 'bar' } : {},
... false ? { falsy: 'falsy' } : {},
}
console.log(item)Run Code Online (Sandbox Code Playgroud)
在其他答案中,我解释了相同的想法,但对于数组.你也可以在这里查看.
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |