graphql-prisma-typescript开源项目

我要开发同款
匿名用户2021年11月23日
79阅读
开发技术Java
所属分类大数据、数据查询
授权协议MIT License

作品详情

AirbnbClone-GraphQLServerExamplewithPrisma

Thisprojectdemonstrateshowtobuildaproduction-readyapplicationwithPrismaandgraphql-yoga.TheAPIprovidedbytheGraphQLserveristhefoundationforanapplicationsimilartoAirBnB.

Getstarted

Note:prismaislistedasadevelopmentdependencyandscriptinthisproject'spackage.json.ThismeansyoucaninvokethePrismaCLIwithouthavingitgloballyinstalledonyourmachine(byprefixingitwithyarn),e.g.yarnprismadeployoryarnprismaplayground.IfyouhavethePrismaCLIinstalledglobally(whichyoucandowithnpminstall-gprisma),youcanomittheyarnprefix.

1.Downloadtheexample&installdependencies

Clonetherepositorywiththefollowingcommand:

gitclonegit@github.com:graphcool/graphql-server-example.git

Next,navigateintothedownloadedfolderandinstalltheNPMdependencies:

cdgraphql-server-exampleyarninstall2.DeploythePrismadatabaseservice

YoucannowdeploythePrismaservice(notethatthisrequiresyoutohaveDockerinstalledonyourmachine-ifthat'snotthecase,followthecollapsedinstructionsbelowthecodeblock):

cdprismadocker-composeup-dcd..yarnprismadeployIdon'thaveDockerinstalledonmymachine

Todeployyourservicetoapubliccluster(ratherthanlocallywithDocker),youneedtoperformthefollowingsteps:

Removetheclusterpropertyfromprisma.yml.Runyarnprismadeploy.WhenpromptedbytheCLI,selectapubliccluster(e.g.prisma-eu1orprisma-us1).Replacetheendpointinindex.tswiththeHTTPendpointthatwasprintedafterthepreviouscommand.

NoticethatwhendeployingthePrismaservicefortheveryfirsttime,theCLIwillexecutethemutationsfromprisma/seed.graphqltoseedsomeinitialdatainthedatabase.TheCLIisawareofthisfilebecauseit'slistedinprisma/prisma.ymlundertheseedproperty.

3.StarttheGraphQLserver

ThePrismadatabaseservicethat'sbackingyourGraphQLserverisnowavailable.Thismeansyoucannowstarttheserver:

yarndev

Thedevscriptstartstheserver(onhttps://localhost:4000)andopensaGraphQLPlaygroundwhereyougetaccestotheAPIofyourGraphQLserver(definedintheapplicationschema)aswellastheunderlyingPrismaAPI(definedintheauto-generatedPrismadatabaseschema)directly.

InsidethePlayground,youcanstartexploringtheavailableoperationsbybrowsingthebuilt-indocumentation.

TestingtheAPI

Checkqueries/booking.graphqlandqueries/queries.graphqltoseeseveralexampleoperationsyoucansendtotheAPI.Togetanunderstandingofthebookingflows,checkthemutationsinqueries/booking.graphql.

Deployment

AquickandeasywaytodeploytheGraphQLserverfromthisrepositoryiswithZeitNow.AfteryoudownloadedtheNowDesktopapp,youcandeploytheserverwiththefollowingcommand:

now--dotenv.env.prod

Noticethatyouneedtocreatethe.env.prodfileyourselfbeforeinvokingthecommand.Itshouldlistthesameenvironmentvariablesas.envbutwithdifferentvalues.Inparticular,youneedtomakesurethatyourPrismaserviceisdeployedtoaclusterthataccessibleovertheweb.

Hereisanexampleforwhat.env.prodmightlooklike:

PRISMA_STAGE="prod"PRISMA_CLUSTER="public-tundrapiper-423/prisma-us1"PRISMA_ENDPOINT="https://us1.prisma.sh/public-tundrapiper-423/prisma-airbnb-example/dev"PRISMA_SECRET="mysecret123"APP_SECRET="appsecret321"

TolearnmoreaboutdeployingGraphQLserverswithZeitNow,checkoutthistutorial.

TroubleshootingI'mgettingtheerrormessage[Networkerror]:FetchError:requesttohttps://localhost:4466/auth-example/devfailed,reason:connectECONNREFUSEDwhentryingtosendaqueryormutation

ThisisbecausetheendpointforthePrismaserviceishardcodedinindex.js.Theserviceisassumedtoberunningonthedefaultportforalocalcluster:https://localhost:4466.Apparently,yourlocalclusterisusingadifferentport.

Younowhavetwooptions:

Figureouttheportofyourlocalclusterandadjustitinindex.js.Youcanlookitupin~/.prisma/config.yml.Deploytheservicetoapubliccluster.ExpandtheIdon'thaveDockerinstalledonmymachine-sectioninstep2forinstructions.

Eitherway,youneedtoadjusttheendpointthat'spassedtothePrismaconstructorinindex.jssoitreflectstheactualclusterdomainandserviceendpoint.

License

MIT

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论