Mongoose - 为什么子文档不工作?

时间:2017-11-19 16:38:20

标签: node.js mongoose model subdocument

我正在制作一个投票应用,我想根据用户ID,IP地址或MAC地址保存已投票的用户。

我认为在我的voted: VotedSchema模型中设置Poll属性会很直接,但由于某种原因它无效。

民意调查模式:

const mongoose = require('mongoose');
const { Schema } = mongoose;
const OptionSchema = require('./Option');
const VotedSchema = require('./Voted');

const pollSchema = new Schema({
  title: String,
  options: [OptionSchema],
  dateCreated: { type: Date, default: Date.now() },
  _user: { type: Schema.Types.ObjectId, ref: 'User' },
  voted: VotedSchema
});

mongoose.model('polls', pollSchema);

投票的子网:

const mongoose = require('mongoose');
const { Schema } = mongoose;

const votedSchema = new Schema({
  userID: [String],
  IPaddress: [String],
  MACaddress: [String]
});

module.exports = votedSchema;

如果另一方面,我不使用子网,那么它可以正常工作:

const mongoose = require('mongoose');
const { Schema } = mongoose;
const OptionSchema = require('./Option');
const VotedSchema = require('./Voted');

const pollSchema = new Schema({
  title: String,
  options: [OptionSchema],
  dateCreated: { type: Date, default: Date.now() },
  _user: { type: Schema.Types.ObjectId, ref: 'User' },
  voted: {
    userID: [String],
    IPaddress: [String],
    MACaddress: [String]
  }
});

mongoose.model('polls', pollSchema);

我在这里错过了一些超级简单的东西吗?这个问题让我有些困惑。

1 个答案:

答案 0 :(得分:0)

这还没有在mongoose中实现。

看看这个。

https://github.com/Automattic/mongoose/pull/585

现在如果你愿意,你可以像你一样做第二个选项。

或使用

VotedSchema.TypeVotedSchema.tree

可以通过数组来嵌入文档。

投票:[VotedSchema]

http://mongoosejs.com/docs/subdocs.html#single-embedded