Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 覆盖sails更新以仅返回一个对象_Arrays_Callback_Sails.js_Sails Postgresql_Waterlock - Fatal编程技术网

Arrays 覆盖sails更新以仅返回一个对象

Arrays 覆盖sails更新以仅返回一个对象,arrays,callback,sails.js,sails-postgresql,waterlock,Arrays,Callback,Sails.js,Sails Postgresql,Waterlock,更新模型时,waterlock.update始终返回一个对象数组,即使我在primaryKey上设置了条件 在我的密码上 P>并且为了使用更新的记录,我必须指出0个索引,比如UpDeDeDebug记录[0 ],这是我认为不太干净的东西。据docs称,这是一种常见的escenario 知道这一点,我有两个问题: 如果发现一个模型只返回该模型的更新对象,而不是数组,这不是更好吗 如果这是一种约定,那么当.update仅影响一条记录时,如何重写此函数以仅返回一个对象而不是数组 我认为吃水线是不可能的

更新模型时,waterlock.update始终返回一个对象数组,即使我在primaryKey上设置了条件

在我的密码上

<> P>并且为了使用更新的记录,我必须指出0个索引,比如UpDeDeDebug记录[0 ],这是我认为不太干净的东西。据docs称,这是一种常见的escenario

知道这一点,我有两个问题:

如果发现一个模型只返回该模型的更新对象,而不是数组,这不是更好吗

如果这是一种约定,那么当.update仅影响一条记录时,如何重写此函数以仅返回一个对象而不是数组


我认为吃水线是不可能的。这是因为update方法是一种通用方法,在条件不总是这样的情况下传递主键。

通常它会更新所有与查找条件匹配的记录,但由于您可能在模型上使用唯一的验证,它可能会返回一个1或0的数组。你需要自己动手做

通过实现与水线默认值同名的方法,可以重写模型中的方法。但是,由于您需要完全重写代码,这是不可行的。既不改变水线底层代码

解决方案是在您的广告模型上创建新功能:

module.exports = {
  attributes: {
    adid: {
      unique: true,
      required: true
    },
    updateMe: {
    }
  },
  updateOne: function(adid, newUpdateMe, cb){
    Ad.update({ id: req.param('id') }, {
    // desired attributed to be updated
    }).exec(function(err, updatedRecord) {
        // updatedRecord is always an array of objects
        if (updatedRecord.length == 1){
          return cb(null, updatedRecord[0]);
        }
        return cb(null, {}); //also can error if not found.
    });    
  }
};
还有。避免使用id作为模型属性使用其他名称,因为某些数据库(如mongodb)已将此属性添加为默认值,可能会导致与模型冲突

module.exports = {
  attributes: {
    adid: {
      unique: true,
      required: true
    },
    updateMe: {
    }
  },
  updateOne: function(adid, newUpdateMe, cb){
    Ad.update({ id: req.param('id') }, {
    // desired attributed to be updated
    }).exec(function(err, updatedRecord) {
        // updatedRecord is always an array of objects
        if (updatedRecord.length == 1){
          return cb(null, updatedRecord[0]);
        }
        return cb(null, {}); //also can error if not found.
    });    
  }
};