如何在 Sails 的控制器中自定义创建

How can I customize create in controller in Sails

我创建了一个具有一对一关联的评论模型。

// api/models/Comment.js
module.exports = {
  attributes: {
    user: {
      model: 'user',
      unique: true,
    },

    comment: {
      type: 'string'
    },
  }
};

还有一个 HTML 表单来创建它。

<form method="POST" action="/comment">
    <!-- send logged user -->
    <input type="text" name="workingRegion" placeholder="City">
    <input type="submit" value="submit">
</form>

如何在创建评论之前添加 userId(假设用户使用 Passport.js 登录(req.session.user 中的 userId)?

我正在考虑在 CommentController 中自定义 create(),但我不知道如何。 创建:函数(请求,资源){ if (!req.session && !req.session.user) //使用护照 //错误

    //save() ?
}

尝试这样的事情:

// api/controllers/CommentController.js

create: function(req, res) { 
    var params = req.params.all();
    params.user = req.session.user.id;

    Comment.create(params)
    .exec(function(err, comment) {
        //do stuff here
    });
}

然后创建一个策略来检查以确保用户有一个活动会话。

// api/policies/sessionAuth.js

module.exports = function(req, res, next) {
  // this assumes you created an "authenticated" flag for the session
  // when the user logged in
  if (req.session.authenticated) {
    return next();
  }

  return res.forbidden('You are not permitted to perform this action.');
};