GraphQL を使用して docker machine api をクエリし、react 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
}
}
};
助けていただければ幸いです。ありがとうございました。