我正在按照一本书来教自己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版本?
答案 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);
}));