【问题标题】:How to add auto increment id to all objects in an array in Express JS and Mongodb如何在 Express JS 和 Mongodb 中为数组中的所有对象添加自动递增 id
【发布时间】:2018-07-26 02:40:30
【问题描述】:

我是表达js和mongodb的新手。我有一个cinema 架构,如下所示:

var mongoose = require('mongoose');

var CinemaMasterSchema = new mongoose.Schema({
  cinema_name: String,
  cinema_entity: String,
  start_opening_date: { type: Date },
  status: String,
  halls: []
});

module.exports = mongoose.model('CinemaMaster', CinemaMasterSchema);

它接受包含由seat capacitystatuscinema_id 和少数属性组成的对象的大厅数组。

下面是我的路由文件

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var cinema = require('../models/CinemaMaster.js');


router.post('/', function(req, res, next) {
  cinema.create(req.body, function (err, post) {
    if (err) return next(err);
    res.json(post);
  });
});


module.exports = router;

在大厅对象数组中,我如何在创建新影院时添加自动增量 ID。

非常感谢任何帮助。

【问题讨论】:

    标签: mongodb express mongoose mongoose-schema


    【解决方案1】:

    我不是 100% 确定我理解您的问题,但我相信您希望 halls 数组中的每个 hall 都有一个 Mongo _id,对吧?

    如果我是正确的,那么要走的路是将Hall定义为子文档:

    var HallSchema = new mongoose.Schema({
      seat_capacity: Number,
      status : String
    });
    
    var CinemaMasterSchema = new mongoose.Schema({
      // ...
      halls: [HallSchema]
    });
    

    现在数组中的每个hall 都会被自动分配一个Mongo _id。

    【讨论】:

    • 非常感谢您的理解正确,现在每个 hall 都会生成 _id。我如何将 cinemaId 存储在 halls
    • 为什么要将每个电影院的 _id 存储在他们的每个大厅中?这只是多余的,它们包含它们。
    • 不,我只是在问.. 是否可以存储.. 如果可以,您能告诉我们如何做到这一点吗?
    • 有点复杂...你需要在保存之前创建父级的_id,然后将这个_id复制到每个子级中,然后将文档保存在Mongo中。这应该在 StackOverflow 上提出一个完全不同的问题。
    • 感谢您的回复.. 将调查它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2022-07-25
    • 2016-07-19
    • 2018-12-01
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多