Mongoose回调挂起节点js

时间:2018-02-22 13:39:22

标签: javascript node.js mongodb mongoose

我是mongoose和javascript的新手,并希望连接到本地运行的mongodb。以下代码没有错误,将执行除db.on(' connected',function()调用之外的所有控制台日志。之前的控制台日志打印出1,我可以在我的mongodb终端上看到正在接受连接。我在这里缺少什么?

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/rawStockData');

https.get(requestURL, function(res) {
  var data = '';
  res.on('data', function (chunk) {
    data += chunk
  });
  res.on('end', function() {
    var jsonObj = JSON.parse(data);
    console.log('Data Parsed');

    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    console.log(db.readyState);
    db.on('connected', function() {
      console.log('ConnectedToDatabase!');
    });
  });
});

2 个答案:

答案 0 :(得分:2)

在您的情况下,在安装事件侦听器之前调用connect

您可以在稍后的某个时间点(当处理请求时)附加事件侦听器以供打开。

尝试编辑代码,将事件监听器放在 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/rawStockData'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.on('connected', function() { console.log('ConnectedToDatabase!'); }); https.get(requestURL, function(res) { var data = ''; res.on('data', function (chunk) { data += chunk }); res.on('end', function() { var jsonObj = JSON.parse(data); console.log('Data Parsed'); }); }); 函数之后。

import PDFKit

func pdfThumbnail(url: URL, width: CGFloat = 240) -> UIImage? {
  guard let data = try? Data(contentsOf: url),
  let page = PDFDocument(data: data)?.page(at: 0) else {
    return nil
  }

  let pageSize = page.bounds(for: .mediaBox)
  let pdfScale = width / pageSize.width

  // Apply if you're displaying the thumbnail on screen
  let scale = UIScreen.main.scale * pdfScale
  let screenSize = CGSize(width: pageSize.width * scale, 
                          height: pageSize.height * scale)

  return page.thumbnail(of: screenSize, for: .mediaBox)
} 

答案 1 :(得分:0)

我认为你只需要更换你的

db.on('connected', ..)

db.once('connected', ..)

你也可以这样:

mongoose.connection.once('connected', function(err) {
    if (err) {
        console.log(err);
    }
    else {
        console.log("Connected to Database");
    }
}).on('error', function (err) {
    console.log(err);
}).on('disconnected', function () {
    console.log('Disconnected to database');
});

希望它有所帮助。