首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向文档(子文档)添加文档不起作用

向文档(子文档)添加文档不起作用
EN

Stack Overflow用户
提问于 2018-01-23 12:06:25
回答 2查看 49关注 0票数 2

不幸的是,猫鼬的子文档不起作用,我也不知道为什么:

代码语言:javascript
运行
复制
...
mongoose.connect('mongodb://zzz@xxx.ccc.com:59676/zxcv');
var Schema = mongoose.Schema;
 
var entrySchema = Schema({
    title: String,
    img: String,
    info: String,
    link: String
}, {collection: 'xxx'});
 
var userDataSchema = Schema({
  name: String,
  password: { type: String, select: false},
  birth: Number,
  followers: [{ "name": String}],
  entry: [entrySchema]
}, {collection: 'yyy'});
 
var UserData = mongoose.model('UserData', userDataSchema);
var entry = mongoose.model('entry', entrySchema);
 
app.get('/:user', function(req, res) {
    UserData.findOne( {'name': req.params.user}, function(err, user) {
        if (err)
            res.send(err);
        res.json(user);
    });
});

此代码返回来自userDataSchema方案和空条目的数据:[]。我可以分别查询userDataSchema和entrySchema并返回正确的数据,但是它不能一起工作。我在哪里犯错误?默认情况下,我希望动态地向我的模式中添加所有集合(名称在追随者中)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-23 12:31:24

您需要重新定义模式,以便将人口()使用为:

代码语言:javascript
运行
复制
var mongoose = require('mongoose');
var Schema = mongoose.Schema; 

var entrySchema = Schema({
    title: String,
    img: String,
    info: String,
    link: String
}, {collection: 'xxx'});

var userDataSchema = Schema({
    name: String,
    password: { type: String, select: false },
    birth: Number,
    followers: [{ "name": String}],
    entry: [{ type: Schema.Types.ObjectId, ref: 'entry' }]
}, {collection: 'yyy'});


var UserData = mongoose.model('UserData', userDataSchema);
var entry = mongoose.model('entry', entrySchema);

app.get('/:user', function(req, res) {
    UserData.findOne({'name': req.params.user})
        .populate('entry')
        .exec(function(err, user) {
            if (err)
                res.send(err);
            res.json(user);
        });
});

考虑到您实际上已经将对entry模型的引用保存为userData集合中的_id,这是可行的。

有关上述工作原理的深入说明,请咨询文档.

票数 1
EN

Stack Overflow用户

发布于 2018-01-23 12:18:57

代码语言:javascript
运行
复制
var entrySchema = new Schema({
                  ^^^
    title: String,
    img: String,
    info: String,
    link: String
});

编辑:当您用{collection: 'xxx'}声明entrySchema时,您强迫猫鼬创建一个名为xxx的分隔集合,这就是为什么您应该引用userDataSchema中的entrySchema,如chridam的答案所述,或者删除集合选项:{collection: 'xxx'}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48401337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档