【问题标题】:How should I do to wait for this stream to complete before res.send is called?在调用 res.send 之前,我应该如何等待这个流完成?
【发布时间】:2021-04-26 10:07:01
【问题描述】:

我正在尝试对此路由发出请求并执行此 sparql 查询。我应该怎么做才能等待这个stream.on()完​​成然后调用res.send()?我在 stream.on() 中获取数据。 我正在使用 sparql-http-client 库将查询发送到 rdf4j 服务器和 express.js 以创建此路由。

app.get('/', async (req, res) => {
  
  let endpointUrl = "http://localhost:8080/rdf4j-server/repositories/graph";
  let regions = [];
  const query = `
  PREFIX : <http://abc.ro#>
  PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
  PREFIX schema: <http://schema.org/>
  SELECT ?name
  WHERE 
  {
      ?region a schema:DefinedRegion.
      ?region rdfs:label ?name
  }`;
  
  const client = new sparql({ endpointUrl });
  const stream = await client.query.select(query);

  stream.on('data', row => {
    regions.push(row.name.value);   
  });
  
  stream.on('error', err => {
    console.error(err)
  });
  
  res.send(regions); // this is sending an empty array
});

【问题讨论】:

    标签: node.js express stream sparql httpresponse


    【解决方案1】:

    您可以在可读流上检查enter code here'end' 事件。

      stream.on('end', err => {
         res.send(regions);
      });
    

    【讨论】:

    • 如果此答案有效,您可以接受它,以便进入此线程的用户可以将其用作接受用户。
    猜你喜欢
    • 2020-06-07
    • 2021-05-25
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多