簡體   English   中英

用貓鼬和節點查找數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM