我有一个名为vehicle的模式,可以在其中添加来自管理员的数据,也可以添加导入csv文件的数据。顺便说一下,我用的是keystone js。
现在,当我从admin添加数据时,钩子就会被触发和命中,但是当我从导入的csv文件代码中添加数据时,尽管数据被添加到数据库中,钩子还是不会被命中和触发。
我们可以使用Vehicle.model.findOneAndUpdat触发预保存钩子吗?
我的导入csv代码片段
exports.import = function (req, res) {
let file = fs.createReadStream(req.files.file.path)
Papa.parse(file, {
header: true,
worker: true,
preview: prev_val,
complete: function (results) {
let vehicles = _.each(results.data, function (value, key) {
let condition = { VIN: value.VIN }
Vehicle.model.findOneAndUpdate(condition, value, { upsert: true, new: true }, function (err, doc) {
}
管理用户界面
当我从这里添加数据时,钩子就会被触发。
钩子
schema.pre('save', function (next) {
console.log("HIT" , hit)
if (this.isNew) {
next()
} else {
console.log("this._original" , this._original)
console.log("this._original1" , this)
this._diff = getDiff(this, this._original)
next()
}
})
https://stackoverflow.com/questions/59171926
复制