node.js - 蒙戈 : query on subdocs

标签 node.js mongoose database-schema

您好,我在推送新子文档之前检查子文档是否存在时遇到此问题。

var UserSchema = new Schema({
   name        : String,
   app_key     : String,
   app_secret  : String,
   tasks       : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task 
});

var TaskSchema = new Schema({
   name            : String,
   lastPerformed   : Date,
   folder          : String,
   user            : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User
});

这样,您对所有用户(包括其任务数组)的查询可能是:

User.findOne({...}).populate('tasks').run(function(err, user) {
    var subdoc = user.tasks.id(mytask.id);
    if(subdoc){
        //not exist
        //push
    }
});

这是错误:

TypeError: Object  has no method 'id'

最佳答案

您收到该错误是因为没有为“任务”子文档定义“id”字段。您可能指的是“user.tasks._id”,它将返回 MongoDB 默认添加到其文档中的 ObjectId。

关于node.js - 蒙戈 : query on subdocs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18694157/

相关文章:

javascript - 从快速中间件中排除路由

node.js - 如何通过 Accumulo 代理客户端基于 rowkey 删除 Accumulo 中的记录

node.js - 创建模型时出现 Mongoose 错误(使用步骤)

javascript - 通过什么技巧分别构造的两个对象可以是同一个对象?

json - 如何从 meteor 中的数据库生成简单模式

php - 通过一次查询获取数据库架构?

node.js - Passport + Express V4 要求用户未定义

node.js - 如何仅在使用特定路由时在 Koa 中指定静态文件夹?

javascript - Node.js:无法从同一文件内的其他函数返回值

mysql - 从MySql生成的sql脚本理解表关系