今天在学nodejs的时候,遇到一个错误;刚开始完全不知道说的是什么,为什么会出现这个错误

DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead;

因为我是调用数据的库的方法中使用了then()方法;

User.findOne({
username: username//查询条件
}).then(function (userInfo) {}

解决方法:

mongoose.Promise = global.Promise;

解释:

Promise表示一个异步操作的最终结果。与Promise最主要的交互方法是通过将函数传入它的then方法从而获取得Promise最终的值或Promise最终被拒绝(reject)的原因。

ECMAScript 6 规范:

 Promise 是一个对象, 是异步编程的一种解决方案,,从它可以获取异步操作的消息;

语法学习:

状态:

pending:初始状态;

rejected:操作失败;

fulfilled:操作成功;

Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Promise.prototype.then 和  Promise.prototype.catch 方法返回promise 对象, 所以它们可以被链式调用;

方法:

Promise.prototype.catch(onRejected);

Promise.prototype.then(onFulfilled, onRejected);

编写一个promise函数,只需让其返回一个promise即可。

基本用法:

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolvereject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

var promise = new Promise(function(resolve, reject) { // ... some code

  if (/* 异步操作成功 */){ resolve(value); }

  else { reject(error); }

});

promise.then(function(value) {// success},

function(error) { // failure});

eg:

var getJSON = function(url) {

           var promise = new Promise(function(resolve, reject){ 
                         var client = new XMLHttpRequest();
                          client.open("GET", url);
                          client.onreadystatechange = handler;
                           client.responseType = "json";
                          client.setRequestHeader("Accept", "application/json");
                          client.send();
                           function handler() {
                            if (this.readyState !== 4) {
                              return; }
                            if (this.status === 200) {
                              resolve(this.response); }
                            else {
                              reject(new Error(this.statusText));
                            }
                          };
                        });
                        return promise;
                     }; getJSON("/posts.json").then(function(json) { console.log('Contents: ' + json); }, function(error) { console.error('出错了', error); });

Primise --(mongoose's default promise library)的更多相关文章

  1. Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

    操作数据库的时候,老是提示:Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your ow ...

  2. Mongoose Embedded Web Server Library

    https://github.com/cesanta/mongoose http://ltp.ai/docs/ltpserver.html LTP Server在轻量级服务器程序mongoose基础上 ...

  3. node.js开发错误——DeprecationWarning: Mongoose: mpromise

    原文地址 使用mongoose进行数据库操作时,总是提示: (node:5684) DeprecationWarning: Mongoose: mpromise (mongoose's default ...

  4. [AWS] Deploy react project on EC2

    如何在aws部署项目 申请到亚马逊AWS免费账户后,我们可以拥有很多的免费云服务产品项目,其中包括: EC2云服务器. Amazon S3存储. Amazon RDS数据库. Amazon Cloud ...

  5. mongoose的promise(转发)

    Switching out callbacks with promises in Mongoose Published on July 28, 2015 mongo node mongoose pro ...

  6. Mongoose vs mongodb native driver – what to prefer?

      Paul Shan 7th Jun 2015 Mongoose or mongodb native driver, which one to use? This is one of the ini ...

  7. Node.js最新技术栈之Promise篇

    前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...

  8. jQuery JavaScript Library v3.2.1

    /*! * jQuery JavaScript Library v3.2.1 * https://jquery.com/ * * Includes Sizzle.js * https://sizzle ...

  9. Promise deeply lookup

    Motivation Consider the following synchronous JavaScript function to read a file and parse it as JSO ...

随机推荐

  1. tomcat从manager部署war项目上传失败

    tomcat从manager部署war项目上传失败, 查看manager.2018-07-17.log 日志,可以看到如下信息. less manager.2018-07-17.log 17-Jul- ...

  2. [luogu P3628] [APIO2010]特别行动队

    [luogu P3628] [APIO2010]特别行动队 题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特 ...

  3. Hadoop---hu-hadoop1: mv: cannot stat `/home/bigdata/hadoop-2.6.0/logs/hadoop-root-datanode-hu-hadoop1.out.4': No such file or directory

    hu-hadoop1: mv: cannot stat `/home/bigdata/hadoop-2.6.0/logs/hadoop-root-datanode-hu-hadoop1.out.4': ...

  4. 检测用户命令序列异常——使用LSTM分类算法【使用朴素贝叶斯,类似垃圾邮件分类的做法也可以,将命令序列看成是垃圾邮件】

    通过 搜集 Linux 服务器 的 bash 操作 日志, 通过 训练 识别 出 特定 用户 的 操作 习惯, 然后 进一步 识别 出 异常 操作 行为. 使用 SEA 数据 集 涵盖 70 多个 U ...

  5. weblogic为同一domain下的不同server添加不同参数

    一.背景 今天应用提需求说:现有一应用部署在多个server上,该应用会使用Ddubbo.protocol.port参数指定的端口去启动dubbo,现在想要做到的效果是为每个server的Ddubbo ...

  6. Intellij下Jquery中文乱码

    今天在用Jquery+Ajax实现检查用户名是否可用的功能时,意外的发生了乱码,谷歌了很久后终于找到了解决办法: 把js文件复制一份在桌面 用记事本打开,另存为UTF-8格式 复制粘贴回去,覆盖之前的 ...

  7. 随机生成id

    function getRandom(){ return Math.random().toString(36).substring(7);}

  8. bzoj4310

    题解: 后缀数组求出本质不同的串 然后二分答案 贪心判断是否可行 代码: #include<bits/stdc++.h> ; using namespace std; typedef lo ...

  9. System.properties

    win: len:54java.runtime.name=Java(TM) SE Runtime Environment   sun.boot.library.path=D:\Java\jdk1.8. ...

  10. asp.net MVC之Result过滤器浅析

    在asp.net MVC中,每一个Action方法完成之后都会返回一个结果,而我们可以在Result过滤器中根据需要修改这个结果.例如可以根据UserAgent来判断客户端的来源是手机还是PC端,从而 ...