环回模拟会话

时间:2017-04-13 14:06:04

标签: javascript express session-variables loopback

我正在使用带有快速会话的环回来存储cartId。

但我需要在请求会话中注入cartId才能使我的测试工作。

所以在我的远程方法上我有

Cart.get = function (req, cb) {
    Service.getCart(req, req.session.cartId)
    .then(function (result) {
        cb(null, result);
    })
    .catch(cb);
};

Cart.remoteMethod(
    'get',
    {
        accepts: { arg: 'req', type: 'object', 'http': { source: 'req' } },
        returns: { arg: 'cart', type: 'object', root: true },
        http: { path: '/', verb: 'get' }
    }
);

如何强制req.session.cartId进行测试?

由于

2 个答案:

答案 0 :(得分:0)

如果我理解你的情况,你可以做类似下面代码的事情,你只需要在你的get方法定义中添加另一个param(cardId):

 Cart.remoteMethod('get',{
      accepts: [
        { arg: "caseId", type: "number", http: {source:'path'} },
        { arg: 'req', type: 'object', http: { source: 'req' } }
      ],
      returns: { arg: 'cart', type: 'object', root: true },
      http: { path: '/:caseId/getCart', verb: 'get' }
    });

答案 1 :(得分:0)

您可以简单地使用“get”远程方法并通过URL传递cartId,或者如果您关注URL上的cartId可见性,那么您可以使用post方法作为以下代码。 使用以下cart.js文件并在loopback api中进行探索。

module.exports = function (Cart) {

  Cart.getCart = function (cartId, cb) { 
    Cart.findOne({
        where: { cartId  :  cartId } 
    }, function (err, cart) { 
      cb(null, users);
    });
  };

 Cart.remoteMethod('getCart', {
    accepts: {
      arg: "id",
      type: "string",
      required: true
    },
    returns: {
      arg: 'cart',
      type: 'object'
    },
    http: {
      path: '/:cartId/getcart',
      verb: 'get'
    }
  });

};

get call : http://HOST:IP/cart/YourID/getcart

您将按ID检索购物车。 希望这会奏效。