[英]get data with find in mongoose and node
我从mongodb中的数据库返回一些数据时遇到问题。 我让你处境。
我有一个名为db.js的文件,其内容如下:
const mongoose = require('mongoose');
var libro = mongoose.Schema({
titulo: String,
estado: String,
autor: String,
genero: String
});
module.exports = mongoose.model('estanteria', libro);
我还有一个名为estanteria.js的文件,其内容如下:
const Libreria = require('./db');
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/libreria', (err) => {
if(err) throw err;
console.log("Conexión a db correcta");
});
...
function allBooks(){
var libros = Libreria.find({})
return libros;
}
exports.allBooks = allBooks;
我在allBooks()函数中遇到的问题,我不知道如何在对象数组中返回集合的内容,然后将其显示在Web上。 有人可以帮我吗?
在allBooks函数内部,添加一个回调函数,以在进行查找操作后返回。
function allBooks(){
Libreria.find({}).exec(function(error, records) {
if (!error) {
res.send({
success : true,
records : records
});
} else {
console.log(error);
res.send({
success : false,
error : error
});
}
});
}
exports.allBooks = allBooks;
Libreria.find({})
是一个异步操作,您需要使用Promises方式进行处理。 如下所示:
Libreria.find返回一个promise,您可以在.then方法中处理该promise的解析状态,如果发生任何错误,它将在.catch中完成
function allBooks(){
Libreria.find({})
.then(function(books) {
return books;
})
.catch(function(error){
return error;
})
}
// An exmaple router handler as follow:
router.get("/posts", function(req, res){
allBooks()
.then(function(records){
res.json({status: true, records})
})
.catch(function(error){
res.json({status: false, error })
});
})
阅读有关猫鼬承诺的更多信息: http : //mongoosejs.com/docs/promises.html
一般的承诺: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise
使用JSON.stringify()
以jhson格式编码libros,然后将其作为对请求的响应(服务器接收到该请求)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.