Mongoose findOneAndUpdate不返回新的

时间:2016-07-01 15:44:47

标签: node.js mongodb mongoose

根据Mongoose's documentation方法findOneAndUpdate传递时,new: true选项应返回包含新更新的更新文档。但似乎4.0可能已经改变了?

  

new:bool - 如果为true,则返回修改后的文档而不是原始文档。默认为false(在4.0中更改)

我有这段代码,console.log 返回更新后的信息。也没有回调。

Users.findOneAndUpdate({ _id: ObjectId(user._id) }, {
    $set: {
        files: view.getDocumentsOnly(files.files)
    }
}, { new: true }, function(err, userWithFiles) {
    console.log(userWithFiles);
    callback(userWithFiles.value);
});

问题:

有谁知道如何在Mongoose 4.0中返回更新的文档?

上下文

函数view.getDocumentsOnly()只是获取一系列Google Drive对象,并返回一个仅包含文档mimeType的对象数组,而不是电子表格或文件夹。它同步这样做,我可以确认它是否正常工作。我还可以确认我的MongoDB中正在更新该文档。

更新

这是完整的代码。函数参数user是一个mongo doc。如果您有任何问题,请告诉我。

getDriveFiles: function(user, callback) {
    var oauth2Client = new OAuth2(clientID, clientSecret, redirectURI)

    oauth2Client.credentials = user.auth.token;

    google.drive({ version: 'v3', auth: oauth2Client }).files.list({
        auth: oauth2Client,
    }, function(err, files) {
        if (!err) {
            Users.findOneAndUpdate({ _id: ObjectId(user._id) }, {
                $set: {
                    files: view.getDocumentsOnly(files.files)
                }
            }, { new: true }, function(err, userWithFiles) {
                console.log(userWithFiles);
                callback(userWithFiles.value);
            });
        }
    });
},

用户模型:

在上面与getDriveFiles相同的文件的顶部引用。引用方式如下:

const db = mongoose.connect(env.DATABASE_URI).connection;
const Users = db.collection('users');

以下是用户模型:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

    var UserSchema = new Schema({
        files: [],
        auth: {},
        ref: { type: String, default: id.generate() },
        stamp: { type: Date, default: Date.now },
        in : { type: Boolean, default: false }
    });

    mongoose.model('User', UserSchema);

的console.log

以下是console.log返回的内容

{ value: 
   { _id: 57768c0b9712fe2d393dfcfb,
     ref: 'rk4MnbE8',
     auth: 
      { code: // removed,
        token: [Object] },
     in: true,
     stamp: 1467386891876 },
  lastErrorObject: { updatedExisting: true, n: 1 },
  ok: 1 }

0 个答案:

没有答案