Я работаю над надстройкой Node.js, используя cppgraphqlgen, и недавно обновился с версии 3.6.0 до последней версии 4.5.8. Существующая реализация включает в себя базовую схему GraphQL и MockData для возврата простого приветственного сообщения «Hello World». Цель этого вопроса двоякая:
Обновить надстройку для беспрепятственной работы с версией cppgraphqlgen
4.5.8.
Изучить новые подходы к интеграции этого дополнения с веб-интерфейсом GraphiQL
, включая динамическое выполнение запросов.
Текущая настройка
Исходные файлы, задействованные в проекте:
main.cpp
GreetImpl.h< /li>
GreetImpl.cpp
schema.greet.graphql
binding.gyp
Реализация GreetImpl.cpp на данный момент обрабатывает простое приветственное сообщение с помощью cppgraphqlgen версии 3.6.0, но при обновлении до версии 4.5.8 возникают проблемы.
Исходный код скомпилирован с использованием node-gyp. Ниже приведена структура желаемой функциональности:
Дополнительные операции Node.js
Дополнение должно поддерживать следующие операции:
startService()
stopService()
fetchQuery(query: string): строка
Пример использования в Node.js
Вот как надстройка используется в среде Node.js:
//server.js
const express = require("express");
const { graphqlHTTP } = require("express-graphql");
const addon = require("./build/Release/greet.node");
// Initialize C++ service
addon.startService();
// Define a custom resolver
const customResolver = async ({ query, variables }) => {
const result = addon.fetchQuery(JSON.stringify({ query, variables }));
return JSON.parse(result); // Return parsed JSON
};
// GraphQL Middleware
const graphqlMiddleware = graphqlHTTP(async (req) => ({
schema: require('fs').readFileSync(__dirname + '/src/schema/schema.greet.graphql').toString(), // Schema is dynamically handled by cppgraphqlgen
customExecuteFn: ({ document, variables }) =>
customResolver({ query: document.loc.source.body, variables }),
graphiql: true,
}));
const app = express();
app.use("/graphql", graphqlMiddleware);
// Start the server
const PORT = 4000;
app.listen(PORT, () => {
console.log(`GraphQL API available at http://localhost:${PORT}/graphql`);
});
// Cleanup on exit
process.on("SIGINT", () => {
addon.stopService();
process.exit();
});
Ключевые вопросы:
Обновление до cppgraphqlgen 4.5.8:
Какие изменения необходимы для обновления GreetImpl.cpp для поддержки новой версии?
Есть ли любые конкретные проблемы совместимости или критические изменения в версии 4.5.8 по сравнению с 3.6.0?
Интеграция GraphiQL:
Как можно легко интегрировать надстройку узла с GraphiQL для динамической обработки схемы и запросов?
Использует ли описанный выше подход промежуточного программного обеспечения GraphQL собственный преобразователь и express-graphql правильные, или есть что-то лучше альтернативы?
Компиляция с помощью node-gyp:
Требуются ли какие-либо дополнительные настройки в файлеbinding.gyp для поддержки изменений в cppgraphqlgen 4.5.8?
Вспомогательные файлы:
Вот файлы проекта для справки:
Я работаю над надстройкой Node.js, используя cppgraphqlgen, и недавно обновился с версии 3.6.0 до последней версии 4.5.8. Существующая реализация включает в себя базовую схему GraphQL и MockData для возврата простого приветственного сообщения «Hello World». Цель этого вопроса двоякая: [list] [*]Обновить надстройку для беспрепятственной работы с версией cppgraphqlgen 4.5.8. [*]Изучить новые подходы к интеграции этого дополнения с веб-интерфейсом GraphiQL , включая динамическое выполнение запросов. [/list] [b]Текущая настройка[/b] Исходные файлы, задействованные в проекте: [list] [*]main.cpp [*]GreetImpl.h< /li> GreetImpl.cpp [*]schema.greet.graphql [*]binding.gyp Реализация GreetImpl.cpp на данный момент обрабатывает простое приветственное сообщение с помощью cppgraphqlgen версии 3.6.0, но при обновлении до версии 4.5.8 возникают проблемы. Исходный код скомпилирован с использованием node-gyp. Ниже приведена структура желаемой функциональности: [list] [*]Дополнительные операции Node.js [/list] Дополнение должно поддерживать следующие операции: [list] [*]startService() [*]stopService() fetchQuery(query: string): строка [/list] [b]Пример использования в Node.js[/b] Вот как надстройка используется в среде Node.js: [code] //index.js
addon.startService(); console.log(addon.fetchQuery(` { hello { greet } greetmsg } `), '', '') addon.stopService(); [/code] [list] [*]Интеграция с веб-интерфейсом GraphiQL [/list] Я бы хотелось бы интегрировать это дополнение в сервер GraphiQL с помощью express и express-graphql. Ниже приведен план реализации: [code] //server.js
// Start the server const PORT = 4000; app.listen(PORT, () => { console.log(`GraphQL API available at http://localhost:${PORT}/graphql`); });
// Cleanup on exit process.on("SIGINT", () => { addon.stopService(); process.exit(); }); [/code] [b]Ключевые вопросы:[/b] [list] [*]Обновление до cppgraphqlgen 4.5.8: [/list] [list] [*]Какие изменения необходимы для обновления GreetImpl.cpp для поддержки новой версии? [*]Есть ли любые конкретные проблемы совместимости или критические изменения в версии 4.5.8 по сравнению с 3.6.0? [/list] [list] [*]Интеграция GraphiQL: [/list] [list] [*]Как можно легко интегрировать надстройку узла с GraphiQL для динамической обработки схемы и запросов? [*]Использует ли описанный выше подход промежуточного программного обеспечения GraphQL собственный преобразователь и express-graphql правильные, или есть что-то лучше альтернативы? [/list]
[*]Компиляция с помощью node-gyp:
[list] [*]Требуются ли какие-либо дополнительные настройки в файлеbinding.gyp для поддержки изменений в cppgraphqlgen 4.5.8? [/list] [b]Вспомогательные файлы:[/b] Вот файлы проекта для справки: [list] [*]main.cpp [img]https:// i.sstatic.net/yk2kMXj0.jpg[/img] [*]GreetImpl.h [img]https://i.sstatic.net/itFpxOEj.jpg[/img] [*]GreetImpl.cpp [img]https://i .sstatic.net/TM2p7mEJ.jpg[/img] [*]schema.greet.graphql [img]https://i.sstatic.net/YqXDUNx7.jpg[/img] [*]binding.gyp [img]https://i .sstatic.net/xFsqmJXi.png[/img] [/list]
Я пытаюсь изменить однозначно связанный список в Java, но я сталкиваюсь с путаницей в отношении того, как ссылки работают во время процесса изменения. В частности, я не понимаю, почему установление следующего указателя узла на NULL не влияет на...
Я пытаюсь получить случайное число Excel that would get refreshed at a regular time interval, by using a C# add-in exposed through the Microsoft.Office.Interop.Excel library. The function called in Excel is named GetRandomLive with the interval as...
Я пытаюсь использовать функцию полей запроса, используя Azure .net C# SDK, но я получаю ошибку ниже, вызывая метод. Не могли бы вы помочь мне.
Подробная информация об ошибке -
errorcode: Invalidargument Содержание: {«Ошибка»: {«Код»:...