node.js - TypeORM: IN-operatøren fungerer ikke med MongoDB
Jeg prøver å få en liste over elementer ved å bruke en liste med ID-er som følger:
import { In } from 'typeorm';
...findBy({ _id: In(ids) })
ID-er settes ved opprettelse:
@Entity()
export class Foo {
@ObjectIdColumn({ generated: false, unique: true })
_id: string;
...
}
Men det fortsetter å returnere en tom liste.
Å skrive ut operatøren viser følgende:
FindOperator {
'@instanceof': Symbol(FindOperator),
_type: 'in',
_value: [ '1', '2', '3' ],
_useParameter: true,
_multipleParameters: true,
_getSql: undefined,
_objectLiteralParameters: undefined
}
Svar #1
Bruk $in-operatoren nevnt i typeorm mongodb.
Eksempel :
I din entity:
import { Entity, ObjectID, ObjectIdColumn, Column } from "typeorm";
@Entity()
class User {
@ObjectIdColumn()
id: ObjectID;
@Column()
firstName: string;
@Column()
lastName: string;
}
export default User;
i programmet ditt:
import { createConnection } from "typeorm";
import User from "./entity/User";
createConnection()
.then(async (connection) => {
const repo = connection.getMongoRepository(User);
const foo1 = new User();
foo1.firstName = `John`;
foo1.lastName = `Doe`;
await repo.save(foo1);
const users = await repo.find({
where: {
_id: {
$in: [foo1.id],
},
},
});
console.log(users);
})
.catch((e) => {
console.error(e);
});
