0

有没有办法知道猫鼬虚拟二传手何时完成“设置”?

例如:

schema.virtual('file").set(function(fileObj) {
    var that = this;
    var dst = '/somewhere/else.txt';
    fs.rename(fileObj.path, dst, function(err) {
       that.set("file.path", dst);
       that.markModified('file');
       //here i would like to know that the setter finished doing stuff so can potentially save my object
    } 
});

我面临的问题是,当我设置file我的猫鼬模型的属性时,我无法知道重命名何时完成,所以当我保存我的对象时,设置器代码可能还没有完成运行。

我知道我可以在设置文件的模型上创建一个方法,但是有没有办法在设置器中做到这一点?

4

1 回答 1

1

您的选择是:

  1. 使用fs.renameSync而不是fs.rename作为虚拟设置方法必须是同步的。
  2. fs.rename切换到一个实例方法(正如你提到的),它可以接受你的方法在完成时调用的回调参数。
于 2012-11-26T17:32:28.263 回答