gpt4 book ai didi

node.js - Mongoose 和 q promise

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:02 25 4
gpt4 key购买 nike

我正在使用 mongoose/q promises 框架示例 here , 但在尝试使用 findOne 时 nfbind 似乎有一些问题,主要是因为样本来自 Q框架似乎与要点不符。

我的代码:

var mongoose = require('mongoose');
var Q = require('q');

var user_schema = mongoose.Schema({username:String, last_touched:Date, app_ids:[String]});
var user = mongoose.model('user', user_schema);

exports.user = user;
exports.user.find = Q.nfbind(user.find);
exports.user.findOne = Q.nfbind(user.findOne);

如果我调用 user.findOne({username:'test'}).then(function(err, user) { ... },用户始终未定义。如果我删除导出并使用带有回调的非 promise 版本,我得到了用户。我缺少一些特殊的魔法,但是在查看了代码实现之后,Q github 上的示例和 mongoose 演示......真的没什么跳出来。关于如何使 findOne 与 Q 一起工作,有什么想法吗?

我也曾尝试在源代码中而不是在模块中设置 nfbind 函数,但无济于事。

最佳答案

因为您 nfbinding 的方法是 user 对象的方法,所以在将它们传递给 nfbind 之前,您需要将它们 bind 到该对象> 以便在调用时保留 this 指针。

这种方法对我有用:

exports.user.find = Q.nfbind(user.find.bind(user));
exports.user.findOne = Q.nfbind(user.findOne.bind(user));

关于node.js - Mongoose 和 q promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com