使用多个字段查找文档mongodb

axzmvihb  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(172)

我希望仅在交易集合中不存在某个交易时,才将该交易添加到交易集合中。
我的问题是:函数findPosition似乎找到了一些交易,坚韧我的集合是空的。2因此,没有新的交易被添加到我的集合中。
下面是代码:

async function createPostion(params, uid){
  let position = new OpenPositionModel({
    uid : uid,
    symbol : params.symbol,
    entryPrice: params.entryPrice
  });
  return position.save();
}

async function findPosition(uid, symbol, entryPrice){
  return OpenPositionModel.findOne({
    $and: [
        {uid: uid},
        {symbol: symbol},
        {entryPrice: entryPrice}
    ]
  });
}

async function createNewPostion(params, uid){
  let res = findPosition(uid, params.symbol, params.entryPrice);
  if(!res){
    createPostion(params, uid);
  }
}

我试着使用$和操作符来确保通过交易者的uid、符号和entryPrice找到交易。
如果在集合中找不到任何东西,我的游标应该是空的,对吗?

xwbd5t1u

xwbd5t1u1#

您应该等待findPosition返回的PromisecreateNewPosition内得到解析:

async function createNewPostion(params, uid){
  let res = await findPosition(uid, params.symbol, params.entryPrice);
  if(!res){
    createPostion(params, uid);
  }
}

相关问题