Articles of sails.js

如何将模型方法添加到用户会话?

我有一个User模型,我在Sails.js中使用Passport.js 。 通过这个设置, req.user返回当前用户会话的详细信息,如req.user.username返回“Jimmy”,用于Jimmy的会话。 我觉得这非常方便布局的目的,我也想添加一个方法,find用户设置,可通过req.user 。 到目前为止,我的方法(在User模型中)看起来像这样: getSetting: function(code) { UserSettings.find({ where: { user: req.user.id, code: code } }).exec(function(err, setting) { return setting.value; }); } 我怎样才能使这个方法可以通过req.user ,以便当我做req.user.getSetting('TEST_CODE'); 我得到了那个用户所需的设置值? 否则,我怎样才能轻松访问用户的设置? 我有一个与User模型关联的UserSettings模型。 编辑: 用户模型我有: var User = { schema: true, attributes: { username : { type: 'string', unique: true }, email : { type: 'email', unique: true […]

在req vs res中存储数据

我有一个中间件(在sails.js中,一个基于expression式的框架),它在数据库中查找内容,然后存储它在对象中find的内容,所以我可以在布局/控制器中使用它。 目前,我将其存储在req对象中,如下所示: req.someStuff = 'Some stuff'; 不过,我刚刚读到,你也可以这样做: res.locals.someStuff = 'Some stuff'; 有什么不同? 两人都能完成同样的任务。 谢谢。

如何在Passport.js和Sails.js注册后redirect到特定位置?

我正在使用Sails.js,并且已经安装了本地身份validation的passport和passport-local模块。 当我安装护照模块时,一些文件是在策略,服务,模型和控制器下自动创build的。 我已经修改了一些这些文件以适应我的需求,但是,我无法find一种方法来将用户redirect到特定位置后,他注册。 现在,默认行为是用户注册并自动进行身份validation,然后redirect到用户在login时redirect到的相同url。 我试图查看不同的护照生成的文件,但我找不到“注册callback”或类似的东西。 在AuthController ,有一个“callback”方法,看起来像这样: callback: function (req, res) { function tryAgain (err) { var flashError = req.flash('error')[0]; if (err && !flashError ) { req.flash('error', 'Error.Passport.Generic'); } else if (flashError) { req.flash('error', flashError); } req.flash('form', req.body); var action = req.param('action'); switch (action) { case 'register': res.redirect('/signup'); break; case 'disconnect': res.redirect('back'); break; default: res.redirect('/login'); […]

实施客户端 – 服务器authentication的最佳实践

我正在寻找实施客户端 – 服务器身份validation(本地+社交)的最佳实践。 现在我正在分别开发后端和前端。 之前,我通过下一个stream程进行了身份validation: login – >接收令牌 – >调用API 我需要find一种方法将标记添加到黑名单中。 Tech stack:node.js(sails)front-end:angular 前端应用程序也应该可以调用多个服务器的API。 这意味着前端应用程序只能在主服务器上login一次,并可以调用另一个API。 我打开了现成的解决scheme。

sails.js水线保存,读取,分析列表或数组

在Sails Waterline中创build,阅读和分析列表的正确方法是什么? 我一直无法find堆栈溢出或水线Github上的任何东西。 准确地说,我想保存一个想法模型中的标签列表,然后能够通过标签进行search。 理念模式: attributes: { tags: { type: 'string' } } 创build函数(标记以逗号分隔的string传递) create: function (req, res, next) { tags: req.param('tags').split(','); Idea.create(tags, function ideaCreate(err,idea) { //do stuff after create }); }, 这成功地存储标签:即标签= ['tag1','tag2',…,'tagN'] 我已经尝试过.find 。的时髦组合,但无济于事。 简易版本:我如何返回有一些用户请求tagX 更难的版本:如何返回任何有一个标签列表中至less有一个标签的想法?

如何实现OAuth到我的Nodejs / Sails.js应用程序?

我有一个为我的客户端生成API的sails.js应用程序。 为了保证我的API,我需要实现OAuth2.0到我的帆应用程序。 我已经开始遵循这个教程: https : //www.npmjs.com/package/sails-generate-auth#requirements 但每当我试图提升服务器时,我都会遇到各种各样的错误。 我也不明白我在哪里我的凭据发送到服务器,并获得访问令牌。 我对Sails.js相当陌生,只是了解OAuth,无法find如何实现OAuth的适当指南。 我如何实现OAuth到我的应用程序? 请有详细的回答,以便我能充分理解。 更新: 好吧,所以我开始按照这个指南: https : //www.bearfruit.org/2014/07/21/tutorial-easy-authentication-for-sails-js-apps/ ,我想我得到了一切工作,因为它应该(?)当我注册一个帐户,它应该保存在数据库中的数据。 login也似乎正常工作但我不明白如何login后redirect到主页如何访问实际数据,如用户名和电子邮件地址? 我已经testing了邮递员login,当我login时,我得到一个cookie。 我想用它来做什么?

Sails.js如何将数据插入连接表(多对多)

我有一个错误插入到我的连接表中的数据,我不知道我是否正确的做法。 这是我的两个模型,有多对多的关联。 Commit.js: module.exports = { schema: true, attributes: { idCommit : { type: 'integer', autoIncrement: true, primaryKey: true, unique: true }, revision : { type: 'integer', required: true }, issues: { collection: 'issue', via: 'commits', dominant: true } } }; Issue.js: module.exports = { schema: true, attributes: { idIssue : { type: 'integer', autoIncrement: […]

无法使用sails-generate-auth进行注册

我是一个新手api开发者。 为此我正在使用sailsjs。 对于身份validation,我正在使用sails-generate-auth。 我已经在github上跟踪了doc。 这里我所做的是: // ProfileController: home: function (req, res) { Passport .findOne({ protocol: 'local', user: req.user.id }) .exec(function(err, passport) { return res.json({ todo: 'home() is not implemented yet! But you are logged in :)', token: passport.accessToken }); }); } //config/policy.js // '': true, '': ['passport', 'sessionAuth'], 'Profile': { 'showAll': ['passport', 'bearerAuth','sessionAuth'], }, 'auth': […]

对FB和G +计数端点的批量asynchronous调用失败

我的应用程序有一个控制器,输出各种网页的总社交计数: http : //pastebin.com/MLBTb3mi 当我一次打几个电话,但是说有1000个网站的网站,我想更新每个url的社交计数时,它的工作正常,当它的音量调用asynchronous时,它会中断 – 特别是g +和fb的突破。 这是控制台错误,我得到作为对fb的graphicsid的调用的响应(这是“body”响应 – 请参阅控制器的第74行: http : //pastebin.com/MLBTb3mi facebook body is {"id":"970371719648388","created_time":"2015-04-02T07:43:09+0000","is_scrap ed":false,"type":"website","updated_time":"2015-04-02T07:43:09+0000","url":"http:\/\/www.zappos.com\/womens-clothing\/"} facebook result is undefined 有谁知道如何解决这个问题,并使控制器工作顺利? 我尝试使用sharedcount.com进行批量呼叫,并且可以毫无问题地同时拨打数千个电话。 我怎么能写我的控制器来处理这样的批量操作,而不使用像sharedcount这样的外部服务?

如何避免Sails.js策略和控制器的多个数据库访问?

我把策略中的angular色检查: module.exports = function(req, res, next) { var postId = req.param('postId'); var userId = req.session.user.id; Post.findOne({id: postId}) .exec( function (err, post) { if (err) { return next(err); } if (!post) { return res.notFound('Post not found'); } if (post.author !== userId) { return res.forbidden('Not the author'); } next(); }); }; 而在PostController中,我需要再次获取post(并可能填充一些相关的数据) update: function (req, res) { […]