Массив схемы NodeJS / Mongoose с ObjectId

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

0
задан hazer 25 February 2019 в 20:21
поделиться

2 ответа

Я использовал свойство mongooose Populate, чтобы проверить мой код. Это поможет вам понять.

Схема категории

const mongoose  = require('mongoose');
const timestamps    = require('mongoose-timestamp');

const cateorySchema = new mongoose.Schema({
  category_name: {
    type: String,
    trim: true,
    required: true,
  },
  active: {
        type: Boolean,
        default: true,
    }
});

cateorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Category',cateorySchema);

Схема подкатегории

'use strict'

const mongoose    = require('mongoose');
const timestamps    = require('mongoose-timestamp');

const subCategorySchema = new mongoose.Schema({
    categories:{ type: mongoose.Schema.Types.ObjectId, ref: 'Category' },
    subcategorytitle:{
      type:String,
      trim:true,
      required: true
    },
    active: {
        type: Boolean,
        default: true
    }
});
subCategorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Subcategory',subCategorySchema);

Надеюсь, это поможет вам. Если у вас есть какие-либо сомнения, дайте мне знать.

0
ответ дан bhanu sengar 25 February 2019 в 20:21
поделиться

На самом деле ошибка не в ObjectId, а в вашей конфигурации. Вы определяете objectId в 'follow', а затем записываете массив как значение по умолчанию, но на самом деле это не тип объекта ObjectId, так что здесь ошибка. У вас не будет проблем с определением следующим образом.

follows: [{
    type: Schema.Types.ObjectId, //HERE
    ref: 'User'
  }],

или

follows: [Schema.Types.ObjectId],

В обоих определениях будет работать запрос заполнения MongoDB.

0
ответ дан Halil SAFAK 25 February 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: