Я использую сервер Couchdb, работающий в Docker Build на моем Mac.Для доступа к данным я запускаю экспресс-приложение через узел.После построения моей схемы для Graphql и тестирования ее с помощью интерфейса Graphql я могу получать данные от конкретного пользователя, но не документ для всех пользователей от моего средства распознавания пользователей.
Вот мой код:
// распознаватели
var resolvers = {
users: () => {
var statement = "SELECT META(user).id, user.* FROM `" + bucket._name + "` AS user WHERE user.type = 'user'";
var query = Couchbase.N1qlQuery.fromString(statement);
return new Promise((resolve, reject) => {
bucket.query(query, (error, result) => {
if(error) {
return reject(error);
}
resolve(result);
});
});
},
user: (data) => {
var id = data.id;
return new Promise((resolve, reject) => {
bucket.get(id, (error, result) => {
if (error) {
return reject(error);
}
resolve(result.value);
});
});
}
};
// экспресс-настройка
app.use("/graphql", ExpressGraphQL({
schema: schema,
rootValue: resolvers,
graphiql: true
}));
app.listen(3000, () => {
console.log("lisntening...")
});
// Схема
var schema = BuildSchema(`
type Query{
user(id: String!): User,
users: [User]
}
type User{
id: String,
profileImage: String,
birthdate: String,
reviews: [String],
premium: Boolean
}
`);
Когда я пытаюсь выполнить свой запрос следующим образом:
{
users{
id
}
}
я получаю следующее сообщение об ошибке:
{
"errors": [
{
"message": "syntax error - at user",
"locations": [
{
"line": 31,
"column": 3
}
],
"path": [
"users"
]
}
],
"data": {
"users": null
}
}
Конкретный пользовательский запрос из второго преобразователя работает нормально!
Вот мой тестовый документ в базе данных:
{
"id": "ohuibjnklmönaio",
"profileImage": "pic",
"birthdate": "date",
"reviews": [
"a",
"b"
],
"premium": true,
"type": "user"
}