这是我在这里的第一个问题,我最近才开始编写 Node JS 代码。现在我正在使用 NodeJS 和 EJS 作为我的应用程序的模板引擎。我的数据库是 DynamoDB,我想通过使用 AWS Appsync 来制作一个实时表。使用 Appsync,我可以查询和更改表中的字段,但我似乎无法订阅任何更改。当我调用订阅时,也没有打开任何 MQTT websocket。
我尝试按照 Appsync 文档中的 Appsync 订阅示例进行操作,但它似乎不起作用。
注意:我已经定义了我的 infoID 变量,类型信息{} 是在模式中创建的,mutate 和 query 都可以工作。只是订阅不起作用,并且没有在模板上创建 MQTT websocket(这甚至可以使用 NodeJS 和 EJS 吗?)。
我的架构如下:
type Mutation {
deleteInfo(infoID: String!): information
}
type Subscription {
onDeleteInfo(infoID: String): information
@aws_subscribe(mutations: ["deleteInfo"])
}
而我用来查询和订阅的代码是这样的:
const query = gql(`
query($infoID: String!){
getInformation(infoID: $infoID) {
infoID
noOfDays
noOfItems
infoName
}
}`);
// Set up a subscription query
const subquery = gql(`
subscription ($infoID: String) {
onDeleteInfo(infoID: $infoID) {
infoID
noOfDays
noOfItems
infoName
}
}`);
const client = new AWSAppSyncClient({
url: url,
region: region,
auth: {
type: type,
credentials: credentials,
}
});
client.hydrated().then(function (client) {
//Now run a query
client.query({ query: query, variables: {infoID : infoID} })
.then(function logData(data) {
console.log('results of query: ', data);
var responseData = data;
res.send(responseData);
})
.catch(console.error);
//Now subscribe to results
const realtimeResults = function realtimeResults(data) {
console.log('realtime data: ', data);
console.log('subcribe is called');
};
const observable = client.subscribe({
query: subquery,
variables: {infoID : infoID} });
observable.subscribe({
next: realtimeResults,
complete: console.log,
error: console.log
});
};
我的突变代码是:
const mutation = gql(`
mutation($infoID: String!){
deleteInfo(infoID: $infoID) {
infoID
noOfDays
noOfItems
infoName
}
}`);
const client = new AWSAppSyncClient({
url: url,
region: region,
auth: {
type: type,
credentials: credentials,
}
});
client.hydrated().then(function (client) {
//Now run a query
client.mutate({ mutation: mutation, variables:{infoID: infoID} })
.then(function logData(data) {
console.log('results of mutate: ', data);
})
.catch(console.error);
});
感谢任何回答或阅读或以任何方式提供帮助的人!