I'm submitting a...Bug report
[ ] Regression
[*] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
Current behavior
Hello,
I'm using the graphql example( in the example directory of nest) with the Cat CRUD and i try to use a union type and interface but i didn't find a way to do it.
When i try to request my data with a fragment, i have the following error :
"Abstract type MutationResult must resolve to an Object type at runtime for field Mutation.createCat with value "[object Object]", received "undefined". Either the MutationResult type should provide a "resolveType" function or each possible types should provide an "isTypeOf" function."
There is nothing in the doc explaining how to use union / interface, and there is nothing in the graphql example.
In the apollo documentation, the type resolver ( here "Cat" Resolver") should implement a __resolveType function. I tried to set this function in the @resolver('Cat') class CatsResolvers
but it's not working.
I tried to add it on the cat resolvers class
Expected behavior
The request should return either a Cat item or GraphQLErrorItem from my schema definition.
Minimal reproduction of the problem with instructions
export interface GraphQLError {
readonly message: string;
readonly errorCode: number;
readonly type: string;
}
type GraphQLError {
message: String
errorCode: Int
type: String
}
union MutationResult = Cat | GraphQLError
- change the createCat Mutation in the schema
- createCat(name: String, age: Int): MutationResult
- add the function in cats.resolvers.ts in the CatsResolvers class
__resolveType(obj, context, info): string{
return obj.errorCode ? 'GraphQLError' : 'Cat';
}
What is the motivation / use case for changing the behavior?
Environment
Nest version: 4.5.10 (core)
For Tooling issues:
- Node version: 9.4
- Platform: Mac
Others:
I'm submitting a...
[ ] Regression
[ ] Bug report
[x] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
Current behavior
I cant't figure out how set custom header during a query request.
Header decorator, doesn't work, nor Response decorator.
Let me know if there is another way.
Expected behavior
There should be the ability to use header decorator as for the controller:
@Header('x-custom-header', 'xxxx')
@query('books')
async getBooks() {
....
}
Minimal reproduction of the problem with instructions
What is the motivation / use case for changing the behavior?
Environment
Nest version: X.Y.Z
For Tooling issues:
- Node version: XX
- Platform:
Others:
Does this package support Apollo Server 2.0 or the older version? I installed their release candidate for express (ap[email protected]). graphqlExpress is no longer available. import { graphqlExpress } from 'apollo-server-express';
How would I go about using nestjs/graphql with Apollo Server 2.0?
thank you
Here is a good example on how to apply Auth in GraphQL using Directive Resolvers as "resolvers middlewares" -> https://blog.graph.cool/graphql-directive-permissions-authorization-made-easy-54c076b5368e. Currently this module don't support to define directives, even that graphql-tools
allows it.
I don't know how that is handled in combination with Guards/Interceptors of Nest. Using this kind of directives allow the Schema definition to be discovered by the users and depending the role to show or hide specific fields.
Hi!
I just discovered this framework and I have to say it’s awesome. Kudos!
The GraphQL module is great, but I did not find any information regarding how to do batching and caching, which is pretty required to avoid a big waste of resources (see https://github.com/facebook/dataloader).
Given the fact that resolvers are automatically mapped, I guess there’s currently no way to do that, right? An integration with dataloader would be awesome, if not mandatory for any medium to large application.
And, happy new year, by the way. ☺️
If the parent resolver and the child resolver both have Guard, the validate function of the guard will be triggered twice. The guard of parent will be passed with the request object, while the guard of the child will be passed with whatever parent resolver returns.
@Resolver('User')
export class UserResolvers {
constructor(
private readonly userService: UserService
) {}
@UseGuards(CustomGuard) // validate function here will get request object
@Query('me')
async getUser(obj, args, context, info) {
const { user } = context
return {
account_type: user.accountType,
balance: user.balance,
currency: user.currency,
id: user.accountId
}
}
@UseGuards(CustomGuard) // validate function here will get the result of getUser
@ResolveProperty('balance')
async getBalance(obj, args, context, info) {
if (obj.balance) return obj.balance
const data = await this.userService.getAccount(context, context.user.session)
return data.balance
}
}
I'm submitting a...
[X] Regression
[X] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
Current behavior
I can't access the request within my guards anymore. The request within the execution context is always undefined. It looks like the request doesn't get passed through apollo server correctly.
Expected behavior
The request should be accessible within guards.
Minimal reproduction of the problem with instructions
https://github.com/w0wka91/nest/tree/graphql-passport-integration
What is the motivation / use case for changing the behavior?
The request should be accessible to authenticate the user. Furthermore this behavior doesn't let me integrate nestjs/passport into my application.
Environment
Nest version: 5.3.0
This error accurs since apollo server was updated
For Tooling issues:
- Node version: 10.9
- Platform: Mac
Others:
Example:
`import { Query, Resolver } from '@nestjs/graphql';
@resolver('Example')
export class ExampleResolvers {
constructor() {
}
@query('example')
async example(obj, args, context, info) {
return {name: 'alik'};
}
async otherMethod() {
return 'hello word';
}
}
`
y have this error (node:8600) UnhandledPromiseRejectionWarning: Error: Example.otherMethod defined in resolvers, but not in schema
how to test graphql use nestjs
I'm submitting a...
Current behavior
When I try to inject GraphQLFactory
into either a factory function or a class passed to GraphQLModule.forRootAsync()
, the app fails to bootstrap, with no error displayed in the console.
Expected behavior
I think I should be able to inject GraphQLFactory
and use it in a factory or class passed to .forRootAsync()
.
Minimal reproduction of the problem with instructions
git clone [email protected]:nestjs/nest.git
cd nest/sample/12-graphql-apollo
npm install
- edit app.module.ts to look like:
imports: [
CatsModule,
GraphQLModule.forRootAsync({
useFactory(graphQLFactory: GraphQLFactory) {
return {
typePaths: ['./**/*.graphql'],
installSubscriptionHandlers: true,
};
},
inject: [GraphQLFactory]
}),
],
npm run start
What is the motivation / use case for changing the behavior?
I want to use the GraphQLFactory.mergeTypesByPaths()
method to do some pre-processing of my schema when bootstrapping my app. Up until today I was using the old v3.0.0 way of configuring graphql, where I could inject GraphQLFactory
into my AppModule.
Now I am upgrading to v5.1.0 and it seems that when I try to inject GraphQLFactory
into either a factory function or a class passed to GraphQLModule.forRootAsync()
, the app fails to bootstrap with no error.
Environment
Nest version: 5.3.0
"@nestjs/common": "^5.3.0",
"@nestjs/core": "^5.3.0",
"@nestjs/graphql": "^5.1.0",
Ho can the query method be passed to the right Query type parent?
Or how can the resolver class be annotated correctly in order to resolve?
.graphql
type CustomQuery{
foo: String
}
type Query {
mw: CustomQuery
}
CustomResolver
import { Query, Resolver } from '@nestjs/graphql';
@Resolver()
export class CustomResolver {
constructor() {}
@Query()
foo(): string {
return 'bar';
}
}
create schema
const typeDefs = this.graphQLFactory.mergeTypesByPaths( './**/*.graphql');
const schema = this.graphQLFactory.createSchema({ typeDefs });
result
{
"data": {
"mw": {
"foo": null
}
},
"extensions": {
"tracing": {
"version": 1,
"startTime": "2018-02-20T17:01:09.202Z",
"endTime": "2018-02-20T17:01:09.202Z",
"duration": 242964,
"execution": {
"resolvers": [
{
"path": [
"mw"
],
"parentType": "Query",
"fieldName": "mw",
"returnType": "CustomQuery",
"startOffset": 77828,
"duration": 96395
},
{
"path": [
"mw",
"foo"
],
"parentType": "CustomQuery",
"fieldName": "foo",
"returnType": "String",
"startOffset": 214124,
"duration": 8691
}
]
}
}
}
}
maybe relevant dependencies
{
"dependencies": {
"@nestjs/common": "4.6.4",
"@nestjs/core": "4.6.4",
"@nestjs/graphql": "2.0.0",
"@types/graphql": "0.12.4",
"graphql": "0.13.1",
"graphql-tools": "2.21.0"
}
}
A) What am I doing wrong?
B) Can anyone confirm that custom query types are not supported at the moment?
C) Would a PR supporting this via annotation be welcomed?
I have following code:
import {
Module,
MiddlewaresConsumer,
NestModule,
RequestMethod,
} from '@nestjs/common';
import { graphqlExpress } from 'apollo-server-express';
import { GraphQLModule, GraphQLFactory } from '@nestjs/graphql';
import {UsersModule} from './Users/users.module';
@Module({
imports: [GraphQLModule],
modules: [UsersModule],
export class ApplicationModule {
constructor(private readonly graphQLFactory: GraphQLFactory) {}
}
And application exits with following error:
[Nest] 24011 - 2018-2-13 13:06:05 [NestFactory] Starting Nest application...
[Nest] 24011 - 2018-2-13 13:06:05 [ExceptionHandler] Nest can't resolve dependencies of the ApplicationModule (?). Please verify whether [0] argument is available in the current context.
Error: Nest can't resolve dependencies of the ApplicationModule (?). Please verify whether [0] argument is available in the current context.
at Injector.<anonymous> (/home/tymur/Learning/nest/project/node_modules/@nestjs/core/injector/injector.js:160:23)
at Generator.next (<anonymous>)
at fulfilled (/home/tymur/Learning/nest/project/node_modules/@nestjs/core/injector/injector.js:4:58)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:160:7)
at Function.Module.runMain (module.js:703:11)
at startup (bootstrap_node.js:190:16)
at bootstrap_node.js:662:3
1: node::Abort() [node]
2: 0x8c8099 [node]
3: v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) [node]
4: 0xaddc5c [node]
5: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [node]
6: 0x3ab9ebd042fd
Aborted (core dumped)
UsersModule is dummy module:
import {Module} from '@nestjs/common';
import {UsersService} from './users.service';
import UsersController from './users.controller';
import {usersProviders} from './users.providers';
import {DatabaseModule} from '../common/database/database.module';
import {LibrariesModule} from '../Libraries/libraries.module';
import {UserResolver} from './user.resolver';
@Module({
// modules: [DatabaseModule, LibrariesModule],
// controllers: [UsersController],
// components: [
// UsersService,
// ...usersProviders,
// UsersResolver,
// ],
// exports: [
// UsersService,
// ],
})
export class UsersModule {}
but if i comment out modules: [UsersModule],
in ApplicationModule, everithing works fine. Same as commenting out constructor in application module. What im doing wrong?
Hello,
Is there any good way to validate data in mutations like string length etc?
typescript mutation { createSth(name:"something", website:"http://test.com/") { id name website } }
How can i validate name or website data?
PS: Kamil, great job with nestjs!
Regards
I'm submitting a...
Current behavior
(Me again! Thanks for the incredibly rapid response to my last two issues - hopefully this is the last for a while ... 😄 )
So in my app I am using the typeDefs
config option and omitting typePaths
because I do some of my own pre-processing of the schema files before handing them off to Nest.
There is an issue currently with this part of the GraphQLModule
code:
|
const typeDefs = this.graphQLFactory.mergeTypesByPaths( |
|
...(this.options.typePaths || []), |
|
); |
|
const apolloOptions = await this.graphQLFactory.mergeOptions({ |
|
...this.options, |
|
typeDefs: extend(typeDefs, this.options.typeDefs), |
|
}); |
When this.options.typePaths
is falsy (undefined in my case), then the call to this.graphQLFactory.mergeTypesByPath()
will return the following string:
When this is later combined with the string I pass as the typeDefs
value, then the resulting schema only contains my Queries, but none of my Mutations.
Expected behavior
Passing typeDefs
and no typePaths
should result in a schema exactly equivalent to that defined by the typeDefs
string.
Minimal reproduction of the problem with instructions
git clone [email protected]:nestjs/nest.git
cd nest/sample/12-graphql-apollo
npm install
- edit app.module.ts to look like:
GraphQLModule.forRootAsync({
useFactory() {
return {
installSubscriptionHandlers: true,
typeDefs: `
type Query {
getCats: [Cat]
cat(id: ID!): Cat
}
type Mutation {
createCat(name: String): Cat
}
type Subscription {
catCreated: Cat
}
type Cat {
id: Int
name: String
age: Int
}
`
};
},
}),
npm run start
When trying to execute the createCat
mutation, you will not get the error: "Schema is not configured for mutations."
Additional note: I noticed when putting together the reproduction that when passing the above config to the .forRoot()
method, the app does not even bootstrap, instead failing with the error:
UnhandledPromiseRejectionWarning: Error: Type "Query" was defined more than once.
at Object.buildASTSchema (C:\Development\temp\nest\sample\12-graphql-apollo\node_modules\graphql\utilities
What is the motivation / use case for changing the behavior?
Sometimes you need to pre-process the typedefs before handing off to Nest. In my case, I use user config to create custom fields at run-time.
Suggested fix
I fixed the issue locally by changing line 100 to:
const typeDefs = this.options.typePaths ? this.graphQLFactory.mergeTypesByPaths(
...(this.options.typePaths || []),
) : '';
Environment
Nest version: 5.3.2, graphql v5.1.1
Hi,
I followed the instruction to create a nestjs app successfully. I am now trying to add graphql to the server using the instructions provided here https://docs.nestjs.com/graphql/quick-start. After installing the requrired packages via yarn
and adding the GraphQLModule
with empty schema, i run yarn start
and I get the following error:
yarn run v1.7.0
$ ts-node -r tsconfig-paths/register src/main.ts
Error: Cannot find module 'C:\Users\prabakar\Documents\web-server\src/graphql'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._resolveFilename (C:\Users\prabakar\Documents\web-server\node_modules\tsconfig-paths\lib\register.js:29:44)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object. (C:\Users\prabakar\Documents\web-server\node_modules\apollo-server-core\src\runQuery.ts:1:1)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
I am on windows 10, here is the content of package.json dependencies.
"dependencies": {
"@nestjs/common": "^5.0.0",
"@nestjs/core": "^5.0.0",
"@nestjs/graphql": "^3.0.0",
"@nestjs/microservices": "^5.0.0",
"@nestjs/testing": "^5.0.0",
"@nestjs/typeorm": "^5.0.0",
"@nestjs/websockets": "^5.0.0",
"@types/graphql": "^0.13.1",
"apollo-server-express": "^1.3.6",
"graphql": "^0.13.2",
"graphql-tools": "^3.0.2",
"mysql": "^2.15.0",
"reflect-metadata": "^0.1.12",
"rxjs": "^6.0.0",
"typeorm": "^0.2.7",
"typescript": "^2.8.0"
},
any ideas what is going on?
Hallo,
in a previous release there has been the GraphQLFactory provider with the createSchema()-function. This has been removed and it seems there is no way to pass merged GraphQL types to GraphQLModule.forRoot(). Am I right or did I overlook something?
What is the reason to remove support for predefined types?
My use case is this: I have a multi-repo project and one of them returns the merged types. Until now I have simply passed them to createSchema(), but now I have to update to the latest nestjs/graphql version (I need the Root()-decorator).
Thanks,
Steven
Hi,
I have an issue, when merge types and create schema, on terminal console show errors like this:
node:8726) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): TypeError: buildASTSchema.getDescription is not a function
(node:8726) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled willterminate the Node.js process with a non-zero exit code.
this is my code
const typeDefs = this.graphQLFactory.mergeTypesByPaths('./**/*.graphql');
const schema = this.graphQLFactory.createSchema({ typeDefs });
consumer
.apply(graphqlExpress(req => ({ schema: {}, rootValue: req })))
.forRoutes({ path: '/graphql', method: RequestMethod.ALL });
I'm submitting a...
[ ] Regression
[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
Current behavior
Using Nestjs with the GraphQLModule as documentation describes, there are a problem with throwing HttpException. The error message that GraphQL returns, contains "[Object Object"] in the message field instead the HttpException message.
The GraphQL.js library is expecting an Error instance, but HttpException not inherit from Error. What is the main reason for HttpException is not extending from Error?
In addition to this any Exception Filter is not working.
Expected behavior
Proper error handling and Exception Filters working with GraphQL.
Minimal reproduction of the problem with instructions
Install @nestjs/graphql and configure it as documentation describes. In any resolver try to throw a HttpException (or a inherited custom one). GraphQL returns an error like this:
{
"data": {
"findOneUserById": null
},
"errors": [
{
"message": "[object Object]",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"findOneUserById"
]
}
]
}
What is the motivation / use case for changing the behavior?
Proper error handling working with GraphQL and documentation for how to deal with this.
Environment
- "@nestjs/common": "^4.5.9",
- "@nestjs/core": "^4.5.10",
- "@nestjs/graphql": "^2.0.0",
- "@nestjs/microservices": "^4.5.8",
- "@nestjs/testing": "^4.5.5",
- "@nestjs/websockets": "^4.5.8",
For Tooling issues:
- Node version: 9.4.0
- Platform: Linux
Others:
- Kubuntu
- WebStorm
- GraphiQL
- npm
@nestjs/graphql v5.0.0 not published?
When I run the nest sample 12-graphql-apollo
, it throws some errors
TSError: ⨯ Unable to compile TypeScript:
src/app.module.ts(8,19): error TS2339: Property 'forRoot' does not exist on type 'typeof GraphQLModule'.
I have seen those similar issues nestjs/nest#484, nestjs/nest#488 and they seem to be resolved. However, I am on @nestjs/graphql v3.0.0, @nestjs/common and /core v5.0.0 and the following code:
@Module({
imports: [GraphQLModule]
})
export class GraphQLSetupModule {
private readonly schema: any;
constructor(graphQLFactory: GraphQLFactory) {
this.schema = graphQLFactory.createSchema({
typeDefs: mergedTypes
});
}
}
where mergedTypes
is exactly:
schema {
query: Query
}
type Query {
countries: [Country]
}
directive @entity on OBJECT
type Country @entity {
# The id is also the official ISO code of the country.
_id: ID
name: String
}
fails with stack trace:
TypeError: Cannot convert undefined or null to object
at Function.getPrototypeOf (<anonymous>)
at ResolversExplorerService.filterResolvers (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:34:34)
at resolvers.flatMap.instance (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:27:66)
at map (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:31:102)
at Array.map (<anonymous>)
at lodash_1.flattenDeep.modules.map.module (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:31:80)
at Array.map (<anonymous>)
at ResolversExplorerService.flatMap (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:31:45)
at ResolversExplorerService.explore (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/resolvers-explorer.service.js:27:32)
at GraphQLFactory.createSchema (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/graphql/dist/graphql.factory.js:23:149)
at new GraphQLSetupModule (/Users/danielkucal/Applications/someApp/src/LHBackend/dist/src/graphql/GraphQLSetupModule.js:27:38)
at resolveConstructorParams (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/core/injector/injector.js:64:84)
at Injector.resolveConstructorParams (/Users/danielkucal/Applications/someApp/src/node_modules/@nestjs/core/injector/injector.js:86:30)
at process._tickCallback (internal/process/next_tick.js:178:7)
Any ideas? Thanks in advance!
I have the following code snippet that works fine in graphql-yoga.
Subscription: {
post: {
subscribe: (parent, args, ctx, info) => {
return ctx.db.subscription.post(
{
where: {
mutation_in: ["CREATED", "UPDATED"]
}
},
info
);
}
}
},
If I try to get the context in the Nest way - all of those args are undefined
@Subscription('post')
onPostMutation(parent, args, ctx, info) {
// all args are undefined
// ...
}
So my question - how to get context and args for a subscription?
My AppModule have this configuration https://docs.nestjs.com/graphql/quick-start, but a need to upload a file with multipart/form-data, i added a new Module with a Controller with this method:
@Post('upload') @UseInterceptors(FileInterceptor('file', { storage })) async uploadFile(@UploadedFile() file, @Response() res) { return {}; }
this method never respond to a client
Trying to configure GraphQL subscriptions using existing express server.
But seems that there is some kind of conflict.
Error thrown in graphiql
console:
WebSocket connection to 'ws://localhost:3000/subscriptions' failed: Connection closed before receiving a handshake response

When using new server. There is no error.
Here the graphQL configuration I've used:
this.setSameServer()
- uses nest http server instance.
this.setDifferentServer()
- uses new http instance.
import {
MiddlewareConsumer,
Module,
HttpServer,
Inject,
NestModule,
OnModuleDestroy,
} from '@nestjs/common';
import { AppController } from 'app.controller';
import { AppService } from 'app.service';
import { graphqlExpress, graphiqlExpress } from 'apollo-server-express';
import { GraphQLModule, GraphQLFactory } from '@nestjs/graphql';
import { AuthorResolver } from 'author.resolver';
import { SubscriptionServer } from 'subscriptions-transport-ws';
import { execute, subscribe } from 'graphql';
import { createServer } from 'http';
import { HTTP_SERVER_REF } from '@nestjs/core';
@Module({
imports: [GraphQLModule, AuthorResolver],
controllers: [AppController],
providers: [
{
provide: 'SUBSCRIPTION_SERVER',
useFactory: () => {
const server = createServer();
return new Promise(resolve => server.listen(88, () => resolve(server)));
},
},
AppService,
],
})
export class AppModule implements NestModule, OnModuleDestroy {
private subscriptionServer: SubscriptionServer;
private subscriptionPort: number;
private wsServer: HttpServer;
constructor(
private readonly graphQLFactory: GraphQLFactory,
@Inject(HTTP_SERVER_REF) private readonly httpServerRef: HttpServer,
@Inject('SUBSCRIPTION_SERVER') private readonly ws: HttpServer,
) {
this.setSameServer();
//this.setDifferentServer();
}
private setSameServer() {
this.wsServer = this.httpServerRef.getHttpServer();
this.subscriptionPort = 3000;
}
private setDifferentServer() {
this.wsServer = this.ws;
this.subscriptionPort = 88;
}
public configure(consumer: MiddlewareConsumer) {
const typeDefs = this.graphQLFactory.mergeTypesByPaths('./**/*.graphql');
const schema = this.graphQLFactory.createSchema({ typeDefs });
const route = '/graphql';
const routeIDE = '/graphiql';
const routeSubs = '/subscriptions';
const middlewareIDE = graphiqlExpress({
endpointURL: route,
subscriptionsEndpoint:
'ws://localhost:' + this.subscriptionPort + routeSubs,
});
const middleware = graphqlExpress(req => ({
schema,
rootValue: req,
debug: false,
}));
consumer.apply(middleware).forRoutes(route);
consumer.apply(middlewareIDE).forRoutes(routeIDE);
this.subscriptionServer = new SubscriptionServer(
{
execute,
subscribe,
schema,
},
{
server: this.wsServer,
path: routeSubs,
},
);
}
public onModuleDestroy() {
this.subscriptionServer.close();
}
}
Used these issues for help:
nestjs/nest#500
#6
And full repo if you want to reproduce:
https://github.com/ph55/nest-graphql-subscriptions
Is there any way to add @Body to this library for the args param. Finding it frustrating having to convert POJO's from inputs to TypeScript classes.
I using fastify in nestjs as default, but i can not using this package. How should I do it?
It is possible to provide RXJS support for resolver functions (@Query()
, @Mutation()
, @ResolveProperty()
, ...) ? Like nest route handler, they could return RXJS observable streams :
@Query()
findAll(): Observable<any[]> {
return of([]);
}
Hi, I am new to NestJS, so I hope this issue is not my mistake. I think NestJS's GraphQL module does not support resolvers that returns observables. This is kind of unexpected as the REST counterpart (i.e. controllers) supports observables.
With heyPromise
, I am able to get 'from promise'. However, heyObservable
returns this instead:
{
"data": {
"heyObservable": "[object Object]"
}
}
The expected data for heyObservable
should be 'from rxjs'. For now, we will need to workaround by turning the observable into a promise (i.e. heyObservable_workaround_is_ok
)
Snippet of schema & resolvers used:
type Query {
heyPromise: String
heyObservable: String
}
@Query()
async heyPromise () {
return new Promise(resolve => resolve('from promise'))
}
@Query()
heyObservable () {
return of('from rxjs')
}
@Query()
heyObservable_workaround_is_ok () {
return of('from rxjs').toPromise()
}
I'm submitting a...
[ ] Regression
[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead post your question on Stack Overflow.
Current behavior
{
"error": "Could not connect to websocket endpoint ws://localhost:3000/graphql. Please check if the endpoint url is correct."
}
Expected behavior
It should subscribe to changes.
Minimal reproduction of the problem with instructions
Checkout https://github.com/nestjs/nest/tree/master/sample/12-graphql-apollo
Fire subscription query
subscription {catCreated {id name}}
What is the motivation / use case for changing the behavior?
Well its a bug - so ^^
Environment
Nest version: latest
For Tooling issues:
- Node version: 9
- Platform Mac
Since apollo-server-express
is not working in the Nest way, a new middleware, that adapts to the Exception handling of Nest should be created. The original issue was created in @nestjs/nest
since the example in the documentation leads to use this library.
Related issue nestjs/nest#556
Does anybody know how to solve this problem?
In @query, we get the parameters (args, context, info) like this
@Query()
user(_, args, context, info) {
And req can be retrieved from context or info
Is it possible to get the req from @ResolveProperty too? I have tried something like this but it does not work.
@ResolveProperty()
userExperience(user: user, @Req() request) {
Recommend Projects
-
-
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
An Open Source Machine Learning Framework for Everyone
-
The Web framework for perfectionists with deadlines.
-
A PHP framework for web artisans
-
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
Some thing interesting about web. New door for the world.
-
A server is a program made to process requests and deliver data to clients.
-
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Some thing interesting about visualization, use data art
-
Some thing interesting about game, make everyone happy.
-
Recommend Org
-
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Open source projects and samples from Microsoft.
-
Google ❤️ Open Source for everyone.
-
Alibaba Open Source for everyone
-
Data-Driven Documents codes.
-
China tencent open source team.
-