无法获得蓝鸟承诺和猫鼬的 save() 在 node.js 中工作
Unable to get bluebird promise and mongoose's save() to work in node.js
谁能帮我弄清楚如何在承诺中重写以下工作代码?我想执行插入查询,然后通过套接字将数据发送回客户端.js
var func = require("functions")
var mongoose = require('mongoose');
var mongo_models = require('./database/mongo_model')(mongoose);
var Promise = require("bluebird");
socket.on("submit",function(d){
if(d[0].src !== undefined)
{
var data = func.clear(sanitizer,d),
tab = new mongo_models.Tab({avg:0,post:data});
tab.save(function(err,tw){
io.sockets.in('index').emit("update",tw)
})
}
});
我已经尝试了以下代码,但我从console.log(b)
那里得到了undefined
.显然,save()
没有返回任何结果。承诺:
socket.on("submit",function(d){
if(d[0].src !== undefined)
{
Promise.props({
one: func.clear(sanitizer,d)
}).then(function(a){
return new mongo_models.Tab({avg:0,post:a.one}).save();
}).then(function(b){
console.log(b); // undefined
io.sockets.in('index').emit("update",b)
}).catch(function (error) {
console.log(error);
})
}
});
Save 在 Mongoose 中是有问题的,因为它是那里的 promise 返回函数规则的例外。
我强烈建议您使用蓝鸟来承诺猫鼬,它公开了一个saveAsync
函数:
var Promise = require("bluebird");
var func = require("functions")
var mongoose = Promise.promisifyAll(require('mongoose'));
var mongo_models = require('./database/mongo_model')(mongoose);
然后将异步调用返回为:
// Note the suffix
return new mongo_models.Tab({avg:0,post:a.one}).saveAsync();
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- 如何在构建node-webkit应用程序后获取外部资源
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 从node.js应用程序调用Mongoose Model.save()时挂起
- 无法获得蓝鸟承诺和猫鼬的 save() 在 node.js 中工作
- node js-在mongoose pre('save'..)中哈希pwd;t存储到数据库
- 在mongodb node.js初始化一个数据库时,remove()和save()是什么意思?
- 在Node.JS中跨数组迭代save