导出在异步回调中可用的猫鼬连接?

James Li

我是 Node.js 编码的新手,我通过 mongoose 创建了一个数据库连接,然后将数据库对象导出到我的主 app.js 文件中:

// db.js
var mongoose = require("mongoose");
var uri = /*The URL*/;
var db = mongoose.connect(uri, {
    useMongoClient: true
});

exports.db = db;

在这里,我尝试使用该数据库连接来执行 CRUD 操作:

// app.js
var db = require('./db');

app.post('/', function (req, res) {
    db.collection(/* … */); // throws error
});

错误是:

类型错误:db.collection 不是函数

我认为这是因为connectin的调用db.js是异步的,而requireinapp.js是同步的——所以当我执行时它会是未定义的db.collection??如何使用 Mongoose 来避免此错误?

目标:我希望能够db.collection.insertOne()在我的app.js

我发现了一个有点相关的主题,但它不使用 Mongoose,所以我对如何解决这个问题感到困惑:如何导出仅在异步回调中可用的对象?

James Li

回答我自己的问题:

它需要一个 mongoose 模型在app.js. 因此,我最终将 CRUD 操作路由到控制器文件中定义的函数,而不是db.collection在 mainapp.js中进行。

//app.js
var app = express();
var router = express.Router();
app.use(router);
require("./Routes")(router);

router.get("/xxx", xxx.get);

以下是路线:

//routes.js - takes care of routing URLs to the functions
var XXX = require('../xxx');

module.exports = function(router){
 router.get('/XXX', XXX.get)
};

这是实际的功能:

//xxx.js - functions defined here
exports.get = function (req, res) {
  XXX.getAll(req.body, function(err, result){
    if (!err) {
        return res.send(result); // Posting all the XXX
    } else {
        return res.send(err); // 500 error
    }
  });
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬查询中的回调数据

来自分类Dev

猫鼬:如何捕获由异步回调引起的MongoError

来自分类Dev

如何从猫鼬查询回调中访问特定值?

来自分类Dev

猫鼬-向回调中返回的对象添加方法

来自分类Dev

在NodeJS cronjob中未调用猫鼬查询回调

来自分类Dev

在另一个函数中创建猫鼬连接时不调用查询回调

来自分类Dev

Node.js猫鼬回调

来自分类Dev

猫鼬回调无法使用永远

来自分类Dev

猫鼬人口-回调与执行

来自分类Dev

猫鼬查询在回调后挂起

来自分类Dev

“once('open')”中的回调不会在猫鼬中触发

来自分类Dev

node.js-捕获猫鼬回调中引发的错误

来自分类Dev

在发送带响应的猫鼬回调函数中更改数据

来自分类Dev

猫鼬如何在exec回调函数中传递额外的参数

来自分类Dev

node.js-捕获猫鼬回调中引发的错误

来自分类Dev

猫鼬填充回调未定义

来自分类Dev

猫鼬find()与回调有关的问题

来自分类Dev

从猫鼬承诺的回调函数引发的错误未捕获

来自分类Dev

猫鼬“模式方法”回调不起作用

来自分类Dev

猫鼬从withTransaction回调返回值

来自分类Dev

猫鼬的findById()回调仅返回废话数据

来自分类Dev

猫鼬模式发布'保存'回调顺序

来自分类Dev

猫鼬“模式方法”回调不起作用

来自分类Dev

For循环不从猫鼬回调更新数组

来自分类Dev

导出猫鼬模型

来自分类Dev

跨多个模型导出和重用我的猫鼬连接

来自分类Dev

跨多个模型导出并重用我的猫鼬连接

来自分类Dev

异步猫鼬呼叫

来自分类Dev

异步猫鼬处理