【问题标题】:Populating one-to-many relationships with MongoDB in MEAN Stack在 MEAN Stack 中填充与 MongoDB 的一对多关系
【发布时间】:2015-11-09 10:46:30
【问题描述】:

我在MongoDB Docs 中关注了这篇文章,并创建了类似的一对多关系,仅在子项中通过id 值引用“发布者”。数据结构如下,publisher_id是这里的工作部分:

{
   _id: 123456789,
   title: "MongoDB: The Definitive Guide",
   author: [ "Kristina Chodorow", "Mike Dirolf" ],
   published_date: ISODate("2010-09-24"),
   pages: 216,
   language: "English",
   publisher_id: "oreilly"
}

{
   _id: 234567890,
   title: "50 Tips and Tricks for MongoDB Developer",
   author: "Kristina Chodorow",
   published_date: ISODate("2011-05-06"),
   pages: 68,
   language: "English",
   publisher_id: "oreilly"
}

如果我有一个页面,例如,所有 O'Reilly 书籍,我如何使用正确的publisher_id 返回这些对象。这通常是在前端还是后端完成?

【问题讨论】:

    标签: javascript mongodb mean-stack


    【解决方案1】:

    是的,您通常会使用 Mongoose 中间件在后端 (node.js) 上查询 Mongo 数据库。您还可以使用 MongoDB 插件。您可以使用 http 调用从 Angular 前端发送查询,该节点路由到您的服务器端控制器。您的服务器端 book.controller 文件如下所示:

    var mongoose = require('mongoose'),
    Books = mongoose.model('Books')
    
    exports.findBooks = function(req,res){
        var query = {publisher_id:req.body.publisherName};
        Books.find(query,function(err,bookResults){
            if (err){
                return res.status(400).send({message: err})
            } else {
                res.status(200).send({books: bookResults});
            }
        })
    };
    

    您的 node.js 路由可能如下所示:

     var controller = require('./controllers/book.controller.js'),
            express = require('express'),
            app = express(),
            router = express.Router();
    
     router.post('/find/books',controller.findBooks);
    

    你的 Angular 前端文件会这样调用:

    $http.post('/find/books',{publisherName: $scope.publisher})
            .success(function(res){
                //handle data received
            })
    

    这是一个基本数据查询的答案,它假设用户知道前端的发布者 ID 是什么。您可以在页面加载时查询发布者 ID 和名称列表,让他们从下拉列表中进行选择,然后运行此查询。 如果您正在寻找连接,例如两个表的 SQL 连接,我会看这个答案:Mongoose/mongoDB query joins.. but I come from a sql background

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 2021-07-16
      • 2018-10-08
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多