帆模型

时间:2018-12-28 13:02:58

标签: node.js sails.js

我正在按照一本书来教自己Sails。

书中的代码应为:

Video.create(foundVideos).exec(function(err, videoRecordsCreated){
            if(err){
              console.log('err', err);

              return cb(err);
            }
            console.log('videoRecordsCreated', videoRecordsCreated);
          });

但是运行sails lift之后 我收到以下错误:

  

err {UsageError:无效的新记录。详细信息:有一个数组,但是   预期新记录将作为字典提供(纯JavaScript   宾语)。从Sails v1.0开始不再支持阵列使用   水线0.13。相反,请显式调用.createEach()

at Object.success (/Users/bliss/Documents/Coder/Sails/brushfire/config/bootstrap.js:72:17)
at afterwards (/Users/bliss/Documents/Coder/Sails/brushfire/node_modules/machinepack-youtube/node_modules/machine/lib/intercept-exit-callbacks.js:131:21)
at Timeout._onTimeout (/Users/bliss/Documents/Coder/Sails/brushfire/node_modules/machinepack-youtube/node_modules/machine/lib/intercept-exit-callbacks.js:98:20)
at ontimeout (timers.js:488:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:283:5)   name: 'UsageError',   code: 'E_INVALID_NEW_RECORD',   details: 'Got an array, but expected
     

要作为字典提供的新记录(纯JavaScript对象)。   从Sails v1.0 / Waterline 0.13开始,不再支持使用阵列。   相反,请显式调用.createEach()。” }

如何解决此问题? 看起来该代码应该在.create的早期版本中可以工作,但是现在不再支持使用数组。...

如何重写此代码以使用最新的Sails版本?

1 个答案:

答案 0 :(得分:1)

Waterline的 create 方法期望该参数为对象。

根据您遇到的错误, foundVideos 似乎是对象数组。在这种情况下,您需要使用createEach,它需要对象数组。像这样:

  Video.createEach(foundVideos).fetch().exec(function(err, videoRecordsCreated){
    if(err){
      console.log('err', err);

      return cb(err);
    }
    console.log('videoRecordsCreated', videoRecordsCreated);
  }));