收藏
回答

云开发数据库复杂条件怎么查询并更新?

云开发大佬们,请教一个问题,假设数据库有三条记录:

记录一'key':'a','value':'1'

记录二'key':'b','value':'2'

记录三'key':'c','value':'3'

现在想完成一次查询并更新,思路是:如果想要更新的'key'值或'value'值等于本身或没有记录的值,就更新,如果等于其他已有记录的值,就不更新,如何查询?

举例:如果我想更新'key':'a','value':'1'这条记录,'key'值为a或def...或者'value'值为1或456就更新,'key'值为b或c 或者 'value'值为2或3就不更新。

扩展:我知道写一堆if else条件也可以,但是太麻烦,有没有一种简写查询方法?或者说首先屏蔽掉自己原先的值,让'key':'a','value':'1'不参与查询,我用where(_.or([{key: ''}, {value: ''}]))方法,''填入查询值,只要返回长度!==0,就提示有该记录,长度===0,就更新,就是想问有没有这种屏蔽本身再查询的方法?是用where方法?还是有别的写法?

请赐教







回答关注问题邀请回答
收藏

1 个回答

  • 郑旭东
    郑旭东
    03-22

    感觉有点绕,或者业务本身有点绕,或者你用了一种有点绕的数据结构去满足业务。总之不太明白你的意思,先这样写你看看有用吗?

    let keyArray = ['a', 'b', 'c']
    let valueArray = [1, 2, 3]
    
    let theKey = 'a', theValue = 1
    let keyArrayForQuery = keyArray.splice(keyArray.indexOf(theKey), 1)
    let valueArrayForQuery = valueArray.splice(valueArray.indexOf(theValue), 1)
    
    ...where({
    	key: _.nin(keyArrayForQuery)
    	value: _.nin(valueArrayForQuery)
    }).update...
    
    
    03-22
    有用
    回复 1
    • 田沛
      田沛
      03-22
      已经解决,不过还是谢谢了
      03-22
      回复
登录 后发表内容
问题标签