node.js - Hur använder jag “ELLER” operatorn i typeorm med mongodb


Jag har försökt använda

userRepository.find({
  where: [
    {
      email: '[email ',
    },
    {
      username: 'thisismyusername',
    },
  ]
});

som det förklaras i TypeORM-dokumentationen men jag får detta fel:

  errmsg:
   'Error getting filter : Error getting filter BSON field from doc = [{find user} {filter [[{email [email }] [{username thisismyusername}]]} {returnKey false} {showRecordId false} {$clusterTime [{clusterTime 6660127540193001473} {signature [{hash [184 253 193 112 111 39 205 239 38 92 178 205 149 85 131 136 252 114 180 30]} {keyId 6637077103550398465}]}]}] : not bson []interface {} [[{email [email }] [{username thisismyusername}]]\n\tat erh/mongonet/bsonutil.go:122\n\tat 10gen/atlasproxy/bson_util.go:32\n\tat 10gen/atlasproxy/commands_security.go:521\n\tat 10gen/atlasproxy/commands.go:653\n\tat 10gen/atlasproxy/commands.go:563\n\tat 10gen/atlasproxy/session_proxy.go:256\n\tat 10gen/atlasproxy/session_proxy.go:702\n\tat 10gen/atlasproxy/session_proxy.go:526\n\tat erh/mongonet/proxy.go:209\n\tat erh/mongonet/proxy.go:104\n\tat erh/mongonet/session.go:82\n\tat src/runtime/asm_amd64.s:2361',
code: 8000,
codeName: 'AtlasError',
name: 'MongoError'

Svar #1

Jag tror att ditt exempel bara fungerar för SQL-databaser. För Mongo måste du lägga till operatorerna $or eller $and i dina where-villkor:

userRepository.find({
  where: {
    $or: [
      {
        email: '[email ',
      },
      {
        username: 'thisismyusername',
      },
    ]
  }
});