#mongoose
#mongoose
Вопрос:
Когда я использую функцию «findOne». Я получаю правильный результат.
Но когда я использую aggregate и $match, я получаю пустые результаты. Есть ли какой-либо неправильный код?
Я должен использовать aggregate, поэтому я не могу использовать функцию findOne. Я перепробовал много кода. Но я не могу найти решение.
// resolver.js
const Mongoose = require('mongoose');
const { ObjectId } = Mongoose.Types;
const { GraphQLScalarType } = require('graphql');
const resolvers = {
Query: {
getClinic: (_, { _id }) => {
console.log("getClinic", _id);
const data = Clinic.aggregate([
{ $match: { _id: ObjectId(_id) } },
{
$lookup: {
// do something
},
},
]);
return data;
},
}
}
// schema.js
import mongoose from 'mongoose';
const { Schema } = mongoose;
const clinicSchema = new Schema(
{
id: String,
crn: String,
name: String,
},
{ collection: 'clinic' },
);
export default mongoose.model('Clinic', clinicSchema);
// typedefs.graphql
type Clinic {
_id: ID
crn: String
name: String
//...
}
type Query {
getClinic(_id: ID!): Clinic!
}
// Query
query {
getClinic(_id: "5fcf19678c032a999f9e9dbc") {
_id
crn
name
}
}
// return
{
"data": {
"getClinic": {
"_id": null,
"crn": null,
"name": null
}
}
}
Спасибо
Ответ №1:
Два разных типа, которые вы сравниваете с идентификатором, который пытаетесь сопоставить. Итак, вы, похоже, пытаетесь сравнить строку с идентификатором объекта
Идентификатор схемы клиники => нравится эта схема.Типы.ObjectId
Надеюсь, это помогло