4

これは私のモデルです:

var UserSchema = new Schema({
    username: { type: String, unique: true, index: true },
    url: { type: String },
    name: { type: String },
    github_id: { type: Number },
    avatar_url: { type: String },
    location: { type: String },
    email: { type: String },
    blog: { type: String },
    public_repos: { type: Number },
    public_gists: { type: Number },
    last_github_sync: { type: Date },
    created_at: { type: Date, default: Date.now }
});

関数でドキュメントを更新しようとしていfindOneAndUpdateます:

動作しません:

User.findOneAndUpdate({ github_id: 1 }, { last_github_sync: new Date() }, {});

動作しません:

User.findOneAndUpdate({ github_id: 1 }, { last_github_sync: new Date() });

作品:

User.findOneAndUpdate({ github_id: 1 }, { last_github_sync: new Date() }, {}, function (err, numberAffected, raw) { });

つまり、コールバック関数をバインドして更新操作を機能させる必要がありますが、そのコールバック関数は必要ありません。コードの問題は何ですか?

4

1 に答える 1

19

findOneAndUpdate ドキュメントの例を参照してください。

A.findOneAndUpdate(conditions, update, options, callback) // executes
A.findOneAndUpdate(conditions, update, options)  // returns Query
A.findOneAndUpdate(conditions, update, callback) // executes
A.findOneAndUpdate(conditions, update)           // returns Query
A.findOneAndUpdate()                             // returns Query

コールバックを指定しない場合は、更新を実行するためにQuery呼び出す必要があるオブジェクトが返されます。exec()

于 2013-02-14T15:31:25.513 に答える