Mongodb 运行expres程序时,获取加载错误页面
为什么我们不能将Mongodb 运行expres程序时,获取加载错误页面,mongodb,express,Mongodb,Express,为什么我们不能将函数(err,books)用作函数(books,error) 我想知道它违反了什么原则。在不知道错误的情况下,我唯一能想到的是,您可能想使用: var express = require('express'); var app = express(); var bodyparser = require('body-parser'); var mongoose = require('mongoose'); books = require('./models/books.js');
函数(err,books)
用作函数(books,error)
我想知道它违反了什么原则。在不知道错误的情况下,我唯一能想到的是,您可能想使用:
var express = require('express');
var app = express();
var bodyparser = require('body-parser');
var mongoose = require('mongoose');
books = require('./models/books.js');
mongoose.connect('mongodb://localhost/books');
var db = mongoose.connection;
app.get('/api/authors', function (req, res) {
books.getBooks(function (books,err) {
if(err){
throw err;
}
res.json(books);
});
});
您的模型应该被称为书籍
是否可以包含
错误
消息和模型
,以便我们可以了解有关问题的更多信息?执行查询时,结果作为参数传递给回调函数。如果在执行查询时出现任何错误,则将错误作为第一个参数传递,并将结果作为第二个参数传递给回调函数。这就是它的工作原理
所以,你不能互换使用它
在您的情况下,books.getBooks(函数(books,err){..
如果有任何错误,books
将是其中包含的错误。如果没有,则将在err
参数中产生结果
我假设您的查询工作正常,并且您正在对err
值进行错误检查,这就是您看到错误的原因
可能是您对参数的名称感到困惑。请记住,它们只是变量名,结果根据变量在回调中的位置而定。要回答您的以下问题: 为什么我们不能将
函数(err,books)
用作函数(books,
错误)
大多数npm
模块遵循连续传递样式(CPS)设计模式,该模式使用:
cb(null,data)
传递成功的结果cb(err)
传递错误并退出函数let books = mongoose.model ('Books');
这不是一个完整的例子,但显示了它的本质
TL;DR:我的朋友,这是惯例。请在你的问题中包括你所犯的错误
function getBooks(cb) {
let books, error;
// .... Perform the operations
// .... If all goes well store
// .... the results in books
if (books) {
cb(null, result);
} else {
error = "There was an error loading books"
cb(error)
}
}