【问题标题】:mongoose virtual setter - how to know its finished?猫鼬虚拟二传手 - 如何知道它的完成?
【发布时间】:2012-11-27 01:32:28
【问题描述】:

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

例如:

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 属性时,我无法知道重命名何时完成,所以当我保存我的对象时,设置器代码有可能没有跑完了。

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

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    您的选择是:

    1. 使用fs.renameSync 而不是fs.rename,因为虚拟setter 方法必须是同步的。
    2. 切换到一个实例方法(正如您提到的),该方法可以接受一个回调参数,当fs.rename 完成时您的方法调用该参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2011-10-07
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2016-11-19
      相关资源
      最近更新 更多