apollo graphql mysql_GraphQL-- 使用Apollo Server搭建Node服务端

一、关于Apollo Server

Apollo Server是一种使用JS创建GraphQL服务端的一个方案。它的兼容性比较好,可以很好地和GraphQL客户端进行兼容。同时它可以

独立作为服务端进行

以插件的形式与现有的NodeJS 服务端程序进行兼容

可以作为一个GraphQL的数据网关。

二、搭建Apollo GraphQL Server

1) 和搭建Node Server类似。具体命令如下

npm init --yes

npm i apollo-server graphql

apollo-server 是Apollo Server的核心库

graphql是用于构建GraphQL Schema和执行查询的核心库

2) 使用Babel配置ES6

npm i @babel/cli @babel/core @babel/node @babel/preset-env

3) 创建GraphQL Schema

创建graphtype

import { gql } from "apollo-server";

exportdefaultgql`

type Book {

title: String

author: String

}

`;

创建query graphtype

import { gql } from "apollo-server";

exportdefaultgql`

type Query {

books: [Book]

}

`;

import bookTypes from "./book.types";

import queries from"./queries";

exportdefault [bookTypes, queries];

创建resolver

import dataset from "../dataset"; //dataset即为数据源

const Query ={

books: ()=>dataset.books,

};

const resolvers={

Query,

};

exportdefault resolvers;

创建schema

import { makeExecutableSchema } from "apollo-server";

import typeDefs from"@graphtypes";// 这是配置了alias,引用的是graph type的导出,即export default [bookTypes, queries];

import resolvers from"@resolver";

exportdefaultmakeExecutableSchema({ typeDefs, resolvers, });

3) 配置启动脚本

import "module-alias/register";

import { ApolloServer } from"apollo-server";

import schema from"@schema";

import plugins from"@plugins";

const port= 8080;

const server= newApolloServer({

schema,

plugins,

formatError: (err)=>{//设置响应的错误信息进行格式化处理

returnerr.message;

},

});

server.listen({ port }).then((serverInfo)=>{

console.log("====================================");

console.log(`Apollo GraphQL Server are listening at ${serverInfo.url}`);

console.log("====================================");

});

三、配置package.json

"scripts": {"dev": "nodemon --exec babel-node index.js","test": "echo \"Error: no test specified\" && exit 1"},

四、启动和测试

运行命令:

npm run dev

项目会运行在http://localhost:8080

因为Apollo GraphQL Server将PlayGround整合进去了,所以可以直接使用playground进行调试

fcbe0699f04ddfdaa1c3eeb8226077ad.png

项目代码可查看:

root@in_dev_docker:/apollo# bash scripts/msf_create_lossless_map.sh /apollo/hdmap/pcd_apollo/ 50 /apollo/hdmap/ /apollo/bazel-bin WARNING: Logging before InitGoogleLogging() is written to STDERR E0715 22:08:35.399576 6436 lossless_map_creator.cc:162] num_trials = 1 Pcd folders are as follows: /apollo/hdmap/pcd_apollo/ Resolution: 0.125 Dataset: /apollo/hdmap/pcd_apollo Dataset: /apollo/hdmap/pcd_apollo/ Loaded the map configuration from: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. E0715 22:08:35.767315 6436 lossless_map_creator.cc:264] ieout_poses = 1706 Failed to find match for field 'intensity'. Failed to find match for field 'timestamp'. E0715 22:08:35.769896 6436 velodyne_utility.cc:46] Un-organized-point-cloud E0715 22:08:35.781770 6436 lossless_map_creator.cc:275] Loaded 245443D Points at Trial: 0 Frame: 0. F0715 22:08:35.781791 6436 base_map_node_index.cc:101] Check failed: false *** Check failure stack trace: *** scripts/msf_create_lossless_map.sh: line 11: 6436 Aborted (core dumped) $APOLLO_BIN_PREFIX/modules/localization/msf/local_tool/map_creation/lossless_map_creator --use_plane_inliers_only true --pcd_folders $1 --pose_files $2 --map_folder $IN_FOLDER --zone_id $ZONE_ID --coordinate_type UTM --map_resolution_type single root@in_dev_docker:/apollo# bash scripts/msf_create_lossless_map.sh /apollo/hdmap/pcd_apollo/ 50 /apollo/hdmap/
07-16
根据提供的信息,执行脚本 `scripts/msf_create_lossless_map.sh` 时出现了错误。具体的错误信息如: ``` E0715 22:08:35.399576 6436 lossless_map_creator.cc:162] num_trials = 1 Pcd folders are as follows: /apollo/hdmap/pcd_apollo/ Resolution: 0.125 Dataset: /apollo/hdmap/pcd_apollo Dataset: /apollo/hdmap/pcd_apollo/ Loaded the map configuration from: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. Saved the map configuration to: /apollo/hdmap//lossless_map/config.xml. E0715 22:08:35.767315 6436 lossless_map_creator.cc:264] ieout_poses = 1706 Failed to find match for field 'intensity'. Failed to find match for field 'timestamp'. E0715 22:08:35.769896 6436 velodyne_utility.cc:46] Un-organized-point-cloud E0715 22:08:35.781770 6436 lossless_map_creator.cc:275] Loaded 245443D Points at Trial: 0 Frame: 0. F0715 22:08:35.781791 6436 base_map_node_index.cc:101] Check failed: false *** Check failure stack trace: *** scripts/msf_create_lossless_map.sh: line 11: 6436 Aborted (core dumped) $APOLLO_BIN_PREFIX/modules/localization/msf/local_tool/map_creation/lossless_map_creator --use_plane_inliers_only true --pcd_folders $1 --pose_files $2 --map_folder $IN_FOLDER --zone_id $ZONE_ID --coordinate_type UTM --map_resolution_type single ``` 这段错误信息表明在执行脚本时发生了一个检查失败的情况。错误的具体位置在 `base_map_node_index.cc:101`。可能的原因包括: 1. 数据不匹配:脚本中使用的数据可能存在不匹配的情况,例如字段名或者数据格式不正确。 2. 数据文件缺失:脚本所需的某些数据文件可能不存在或者路径不正确。 3. 依赖问题:脚本所依赖的某些组件或库可能缺失或者版本不兼容。 请检查脚本 `scripts/msf_create_lossless_map.sh` 中的相关代码,确保数据文件和依赖项的正确性。如果问题仍然存在,您可以提供更多的上下文信息,以便我们能够更好地帮助您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值