关键词:
【中文标题】我如何使用`Q`与猫鼬绑定`save`方法【英文标题】:How could I bind `save` method using `Q` with mongoose 【发布时间】:2014-07-04 18:31:27 【问题描述】:说我在User.js
中有以下架构
var mongoose = require('mongoose');
var Q = require('q');
var userSchema = new mongoose.Schema(
phone:
type: Number,
require: true,
index:
unique: true
);
module.exports = mongoose.model('User', userSchema);
module.exports.findOne = Q.nfbind(module.exports.findOne.bind(module.exports));
module.exports.find = Q.nfbind(module.exports.find.bind(module.exports));
还有另一个文件testuser.js
var mongoose = require('mongoose');
var Q = require('q');
var User = require('../User');
var connectionStr = "mongodb://localhost:27017/user-model-test";
mongoose.connect(connectionStr, function(error)
if (error)
throw(error);
console.log("Connect to MongoDB...");
var testuser = new User(
phone: 1008611,
);
testuser.save = Q.nfbind(testuser.save.bind(testuser));
testuser.save().then(function ()
return User.findOne( phone: 1008611 ).then(function (user)
console.log(user.phone);
mongoose.disconnect();
, function (error)
throw(error);
);
, function (error)
throw(error);
).done();
);
请注意,目前我使用testuser.save = Q.nfbind(testuser.save.bind(testuser));
绑定save
,但我想在User.js
中进行绑定,例如module.exports.find = Q.nfbind(module.exports.find.bind(module.exports));
,有什么办法可以做到吗?
谢谢。
【问题讨论】:
【参考方案1】:如果你坚持 Q,我会这样做:
User.create = function(data)
var u = new User(data);
u.save = Q.nfbind(testuser.save.bind(testuser));
// add other methods you want
return u;
;
但是,我想补充一点,如果您对所有其他 Mongoose 方法调用 .exec()
,它们已经返回了一个承诺(所以 .find(..).exec()
返回一个 mpromise 承诺)。也就是说,Mongoose 已经提供了一个 Promise API,save
是目前唯一没有包含的方法之一and there are plans to include it。
知道这与 Bluebird 成为一个单一的衬里也是有益的,Bluebird 有一个 promisifyAll
函数,可以创建更容易调试并且比 Qs 或 Mongoose 更快的 Promise。
【讨论】:
NestJS 与猫鼬模式、接口和 dto 方法问题
】NestJS与猫鼬模式、接口和dto方法问题【英文标题】:NestJSwithmongooseschema,interfaceanddtoapproachquestion【发布时间】:2020-08-0315:57:10【问题描述】:我是nestJS和mongoDB的新手,我不清楚为什么我们需要为要保存在mongoDB中的每个集合声... 查看详情
将模糊搜索与猫鼬一起使用时出现打字稿错误
】将模糊搜索与猫鼬一起使用时出现打字稿错误【英文标题】:TypescripterrorwhenusingfuzzySearchwithmongoose【发布时间】:2020-07-0905:26:05【问题描述】:在我的猫鼬模式中,我使用如下库:https://github.com/VassilisPallas/mongoose-fuzzy-searchingUse... 查看详情
将模糊搜索与猫鼬一起使用时出现打字稿错误
】将模糊搜索与猫鼬一起使用时出现打字稿错误【英文标题】:TypescripterrorwhenusingfuzzySearchwithmongoose【发布时间】:2020-07-0905:26:05【问题描述】:在我的猫鼬模式中,我使用如下库:https://github.com/VassilisPallas/mongoose-fuzzy-searchingUse... 查看详情
什么是易于使用的控制流库或模块,可与猫鼬和节点一起使用 [关闭]
】什么是易于使用的控制流库或模块,可与猫鼬和节点一起使用[关闭]【英文标题】:Whatisaneasytousecontrolflowlibraryormoduletousewithmongooseandnode[closed]【发布时间】:2011-12-1622:11:38【问题描述】:我正在查看async和step,但在进行数据库... 查看详情
将 TypeScript 枚举与猫鼬模式一起使用
】将TypeScript枚举与猫鼬模式一起使用【英文标题】:UsingTypeScriptenumwithmongooseschema【发布时间】:2017-11-0114:52:12【问题描述】:我有一个带有枚举的架构:exportinterfaceIGameMapModelextendsIGameMap,DocumentexportconstgameMapSchema:Schema=newSchema(nam... 查看详情
将 TypeScript 枚举与猫鼬模式一起使用
】将TypeScript枚举与猫鼬模式一起使用【英文标题】:UsingTypeScriptenumwithmongooseschema【发布时间】:2017-11-0114:52:12【问题描述】:我有一个带有枚举的架构:exportinterfaceIGameMapModelextendsIGameMap,DocumentexportconstgameMapSchema:Schema=newSchema(nam... 查看详情
Expressjs 与猫鼬。并在子文档中获取外键子文档
...documents【发布时间】:2018-06-0108:13:00【问题描述】:我有使用外键与国家相关的国家。在获取国家时,我无法获得相关国家,但得到一个奇怪的结果。以下是我的模型国家模式var猫鼬=要求(\'猫鼬\');varSchema=m 查看详情
Expressjs 与猫鼬。并在子文档中获取外键子文档
...documents【发布时间】:2018-06-0108:13:00【问题描述】:我有使用外键与国家相关的国家。在获取国家时,我无法获得相关国家,但得到一个奇怪的结果。以下是我的模型国家模式var猫鼬=要求(\'猫鼬\');varSchema=m 查看详情
猫鼬批量保存承诺
...【发布时间】:2013-06-2906:42:04【问题描述】:我正在探索使用q而不是async-然后我遇到了这里解决的问题:MongooseJSpromises?Orhowtomanagebatchsave如果我使用q,这个答案会是什么?【问题讨论】:【参考方案1】:请参阅@rquinn的帖子,如... 查看详情
我应该如何与摩卡和猫鼬一起使用?
】我应该如何与摩卡和猫鼬一起使用?【英文标题】:howdoiuseshouldwithmochaandmongoose?【发布时间】:2012-10-3012:14:44【问题描述】:我在运行测试时在save()方法中不断收到错误。varUser=require(\'../../models/user\'),should=require(\'should\');descri... 查看详情
mongodb与猫鼬的一对一关系
】mongodb与猫鼬的一对一关系【英文标题】:Onetoonerelationshipsinmongodbwithmongoose【发布时间】:2022-01-1401:22:19【问题描述】:我有2个名为“用户”和“链接”的数据库。每当有新用户注册时,都会在具有唯一ID的用户中创建一个集... 查看详情
为不同数据类型的相同操作重复代码,Express(nodejs) 应用程序与猫鼬
...04-1607:05:19【问题描述】:我正在创建一个ExpressrestAPI,它使用mongoose连接到MongoDB。该数据库有几种不同的数据类型:Us 查看详情
如何在猫鼬的 document.save() 回调中隐藏字段?
】如何在猫鼬的document.save()回调中隐藏字段?【英文标题】:Howtohideafieldinthecallbackofdocument.save()inmongoose?【发布时间】:2019-09-0520:34:20【问题描述】:我想在创建用户后显示用户的数据,使用以下代码在异步函数中返回用户:cons... 查看详情
无法将猫鼬虚拟与打字稿一起使用
...布时间】:2021-09-2722:58:51【问题描述】:我正在尝试学习如何将虚拟机与猫鼬和打字稿一起使用。假设我有一个用户界面。interfaceUserid:mongoose.ObjectId;name:string;likes:string;然后我为猫鼬创建一个模式。//createthemodelc 查看详情
无法将猫鼬虚拟与打字稿一起使用
...布时间】:2021-09-2722:58:51【问题描述】:我正在尝试学习如何将虚拟机与猫鼬和打字稿一起使用。假设我有一个用户界面。interfaceUserid:mongoose.ObjectId;name:string;likes:string;然后我为猫鼬创建一个模式。//createthemodelc 查看详情
快递+猫鼬登录
...目(与猫鼬)。到目前为止一切正常,现在我的问题是:如何确保我的用户已连接?我 查看详情
快递+猫鼬登录
...目(与猫鼬)。到目前为止一切正常,现在我的问题是:如何确保我的用户已连接?我 查看详情
猫鼬保存()不返回承诺
...题描述】:Mongoose的文档确认方法save返回一个承诺。我想使用这种方法在我的数据库中保存一个用户模型。我就是这样做的:save(user)user.save((err,user)=>if(err)returnhandleError(err);elseconsole 查看详情