首页 文章

带有sails-mongo的Sailjs执行类型不正确 . 我究竟做错了什么?

提问于
浏览
1

我有一个sails应用程序只使用一个简单的索引和简单的创建(插入)到mongo数据库 . 当我输入正确的类型数据硬编码为模型中声明的类型时,我收到一个错误 .

url insert err = [Error (E_VALIDATION) 1 attribute is invalid] Invalid attributes sent to urls:
 • status
   • Value should be a number (instead of "0", which is a string)

这是一个非常小的新项目,因此没有很多设置从默认设置更改 .

由于我在创建中有console.log,我可以看到我发送给urls.create的确切内容:

{ url: 'http://www.dina.com',
  status: 0,
  statusDate: '2016-11-19T19:46:10.804Z' }

我没有做任何强制类型的事情,看起来我正在服从类型 . 为什么我会收到错误?

该模型看起来像:

// urls.js
module.exports = {
  attributes: {
    url : { type: 'string' },
    status: { type: 'number'},
    statusDate: {type: 'date'}
  }
};

我的config / models.js架构设置为false:

// config/models.js
module.exports.models = {
  connection: 'DigitalOceanMongodbServer',
  migrate: 'safe',
  schema: false
};

我的控制器创建一个具有硬编码状态和statusDate的新对象:

// urlsController.js
  create: function (req, res) {

    let url = req.body.url; 
    if(!url) return res.json({failure: 'empty url'});

    let isValid = sails.validurl.isUri(url);
    if(!isValid) return res.json({failure: 'url is not valid'});   

    let newObj = {
      url: url,
      status: 0,    <---- obviously a number
      statusDate: new Date().toISOString() <---obviously a date
    }

    console.log(newObj);

    urls.create(newObj).exec(function createCB(err,created){ 
      if (err){
        return res.negotiate(err);
      } else {
        return res.ok(created); 
      }
    }); 
  }

1 回答

相关问题