Sails ORM(水线)回调中的自定义错误

Posted

技术标签:

【中文标题】Sails ORM(水线)回调中的自定义错误【英文标题】:Custom Error in Sails ORM (Waterline) callback 【发布时间】:2015-11-21 19:36:42 【问题描述】:

在我的用户模型中,我有这样的东西:

register: function(data, next) 
    User.findOne(email:data.email).exec(function findOneUserCB(err, user) 
        if (!err && user) 
            return next(new Error('Email already exist.'));
        
        // other things
    );

我基本上是在找到用户时尝试返回自定义错误,但水线没有任何其他错误。 但这不起作用,sails 抱怨说TypeError: Cannot call method 'toString' of undefined

所以我尝试模拟水线错误:

//...
var error = 
    code: 'E_UNIQUE',
    details: 'Invalid',
    model: 'user',
    invalidAttributes: 
        hase: []
    ,
    status: 400

return next(error);
//...

这行得通,但感觉很hackish。从查询回调中传递自定义错误不是更好的方法吗?我找不到有关此主题的任何文档

【问题讨论】:

【参考方案1】:

你可以试试这样的

register: function(data, next) 
    User.findOne(email:data.email).exec(function findOneUserCB(err, user) 
    if(user)
      var alreadyExists = new Error();
      alreadyExists.message = require('util').format('User already exists');
      alreadyExists.status = 400;
      cb(alreadyExists);
    
    // other things
);

【讨论】:

以上是关于Sails ORM(水线)回调中的自定义错误的主要内容,如果未能解决你的问题,请参考以下文章

水线ORM(sails.js)“在哪里或”查询

如何在 Sails 中恢复生命周期回调?

.NET 中的自定义 ORM

Scala 中的自定义 Flyway 回调

401的自定义响应Lambda Authorizer

带有回调的自定义插件