如何在保存后进行mongoose查询?

时间:2017-03-15 17:43:05

标签: node.js mongodb mongoose

如何在保存用户架构的帖子中查询公司名称?

UserSchema.post('save', function (doc) {
   console.warn("POST SAVE", doc);
   console.log(this, "---------------------------------------------");
   this.findOne({_id:doc._id})
      .populate('company')
      .exec(function (err, _user) {
         if(err) return next(err);
         else{
            // console.warn("_USER", _user);
            if(_user.company.name) doc.companyName = _user.company.name;
            Sync.syncUser(doc)
               .then(function (_r) {
                  // console.log(_r,"<-----------------------------------------------------------");
                  if (_r) {
                     console.warn("POST SAVE -> SYNC OK!");
                     next();
                  } else {
                     console.warn("POST SAVE -> SYNC ERR: ", err);
                     return next(err);
                  }
               })
               .fail(function (err) {
                  console.warn("POST SAVE -> SYNC ERR: ", err);
                  return next(err);
               });
         }
   });
});

使用此代码我有一个错误:

  

TypeError:this.findOne不是函数

2 个答案:

答案 0 :(得分:2)

尝试x00\x00"代替User.findOne()或使用this

您可能需要做的第一种方式

this.constructor.findOne

答案 1 :(得分:0)

doc.constructor.findOne对我不起作用。我使用public class MainItem { private String name; private List<subItem> subItems; } public class subItem { private String id; private String groupId; private String displayName; private Status status; }