Javascript 修改feathers hook.result中的响应状态代码

Javascript 修改feathers hook.result中的响应状态代码,javascript,node.js,express,feathersjs,Javascript,Node.js,Express,Feathersjs,我最近一直在玩,我喜欢它。我有以下问题,但 在为update(httpput)服务器方法放置的一个before钩子中,我根据一些条件决定是创建还是更新。如果我选择create,我将使用hook.result跳过服务方法 let createLocation = (hook) => { return hook.app.service('locations').create({ "user": hook.data.user, "location": [{ "la

我最近一直在玩,我喜欢它。我有以下问题,但

在为
update(httpput)
服务器方法放置的一个before钩子中,我根据一些条件决定是
创建
还是
更新
。如果我选择
create
,我将使用hook.result跳过服务方法

let createLocation = (hook) => {
  return hook.app.service('locations').create({
    "user": hook.data.user,
    "location": [{
      "latitude": hook.data.location[0].latitude,
      "longitude": hook.data.location[0].longitude
    }]
  }).then(location => {
     hook.result = location;
     //************ change the response status code here?? **************\\
  });
};

但我无法将响应状态代码更改为“粘贴到已创建的
201
”。我们将不胜感激。(如果可能的话,请指向处理此问题的源代码,我确实搜索了,但没有成功)。

服务和挂钩与传输无关,这就是为什么它们可以通过WebSocket和HTTP使用。任何特定于HTTP的逻辑都应该存在于自己的中间件中。有两种选择。用于为您可以实施的所有服务设置状态代码,仅针对您可以实施的特定服务

如果无法从数据中扣除状态代码,则可以(不可写,并且在将其转换为JSON时不会显示)在数据对象上:

let createLocation = (hook) => {
  return hook.app.service('locations').create({
    "user": hook.data.user,
    "location": [{
      "latitude": hook.data.location[0].latitude,
      "longitude": hook.data.location[0].longitude
    }]
  }).then(location => {
    Object.defineProperty(location, '__status', {
      value: 201
    });
    hook.result = location;
  });
};
并在自定义格式设置程序中使用它:

const app = feathers();

function restFormatter(req, res) {
  res.format({
    'application/json': function() {
      const data = res.data;

      res.status(data.__status || 200);
      res.json(data);
    }
  });
}

app.configure(rest(restFormatter));
还有其他选项,比如返回包含附加元信息的包装器对象(
{status,data}