我正在寻找使用 graphQL 来查询 docker machine api 并获取用于反应 docker admin 样式项目的容器列表。我正在使用 dockerode 一个 NPM 模块来发出请求。第一个函数 getCONtainerById 是我通常如何从 rethinkdb 返回一些项目的方式。
我似乎无法弄清楚如何在 docker.listContainers 函数中返回容器数组,因为它仅在范围内定义,并且在 fetchContainers 函数返回的末尾未定义。
import Docker from 'dockerode'
var docker = new Docker({host: 'http://127.0.0.1', port: 52376});
export default {
getContainerById: {
type: Container,
args: {
id: {type: new GraphQLNonNull(GraphQLID)}
},
async resolve(source, {id}, {rootValue}) {
isLoggedIn(rootValue);
const container = await r.table('containers').get(id);
if (!container) {
throw errorObj({_error: 'Container not found'});
}
return container;
}
},
fetchContainers: {
type: new GraphQLList(Container),
async resolve(source, {id}, {rootValue}) {
isLoggedIn(rootValue);
docker.listContainers(function(err, containers) {
});
if (!containers) {
throw errorObj({_error: 'Container not found'});
}
return containers
}
}
};
帮助将不胜感激。谢谢你。