在创建元素sails-dynamodb上键入不匹配

时间:2018-03-21 18:31:28

标签: javascript sails.js amazon-dynamodb

我正在使用此模块,当我尝试创建一个Object Sails时,请将我发回(“类型不匹配,以便更新属性”)

这是我的代码:

型号:

module.exports = {
 attributes: {
  id:{
  type: 'string',
  primaryKey: 'range'
 },
 picture:{
  type: "string",
  required: true
 },
 title:{
  type: "string",
  required: true
 },
 subcategories:{
  collection: 'Subcategory',
  via: 'category_ref'
 },
 user_ref:{
  model: 'User'
 }
}
};

控制器:

create: function (req, res, next) {
       let  name = "sometext";
        var obj = {
            id: new String(uuidv4()),
            picture: name,
            title: req.param('title')
        }
        Category.create(obj, function (err, cat) {
            if (err) {
                return next(err);
            } else {
                return res.send(cat);
            }
        });
    });
},

我使用instanceof进行了验证,它是一个字符串。

My Sails版本为0.12.14。

提前致谢

1 个答案:

答案 0 :(得分:0)

我很确定问题是您使用new String(uuidv4())。当您将new与String,Number或Boolean等基本构造函数一起使用时,构造函数将返回一个Object。这不是你想要的。相反,删除new并像任何普通函数一样调用构造函数,例如String(uuidv4())。以这种方式调用时,构造函数返回一个原语。

以下示例应该让您了解差异

> new String('test') instanceof String
true
> typeof new String('test')
'object'
> String('test') instanceof String
false
> typeof String('test')
'string'
> new String('test') === 'test'
false
> String('test') === 'test'
true

还有其他一些突出的东西。 id被定义为模型上的范围键,并且没有模型的哈希键。此外,req.param('title')可能返回undefined,null或非字符串的内容。