如何发布和更新模式数组中的模式并打印它?

你好,我是新的节点js和mongoose我有两个计划,我想在其他架构模式对象我的计划

user.js的

// grab the things we need var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Genre = require('../Models/genre'); // create a schema var userSchema = new Schema({ name: { type: String, required: true, unique: true , index:true}, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, age: String, gender: String, genres: [{type: Schema.ObjectId, ref: Genre.Genre}] //this is the genre schema - the user can have many genres }); // the schema is useless so far // we need to create a model using it var User = mongoose.model('User', userSchema); // make this available to our users in our Node applications module.exports = User; 

也曾试图做

 genres: [{type: Schema.Type.ObjectId, ref: Genre.Genre}] and genres: ['Genre'] 

和genre.js

 // grab the things we need var mongoose = require('mongoose'); var Schema = mongoose.Schema, ObjectId = Schema.ObjectId; // create a schema var genreSchema = new Schema({ name: { type: String, required: true, unique: true, index: true }, age: String, gender: String }); // the schema is useless so far // we need to create a model using it var Genre = mongoose.model('Genre', genreSchema); // make this available to our genres in our Node applications module.exports = Genre; 

首先我想知道如果它的方式做到这一点? 有更好的办法吗?

当我张贴邮递员的用户正在添加,但我没有得到完整的stream派,我不知道如果它保存的权利

这是我发布的JSON

 { "name":"erez", "age": "23", "password":"erez1234", "email":"erez@erez.com", "gender":"Male", "genres": ["57285fe32c3c15e40c000001"] /// what should be here? is it right? } 

这是获取用户json

 [ { "_id": "572874be9b43cb4834000002", "name": "erez", "age": "23", "password": "yaniv1234", "email": "erez@beatman.com", "gender": "Male", "__v": 0, "genres": [ "57285fe32c3c15e40c000001" ] } ] 

如果它的权利如何我可以发送全用户与所有stream派上获得用户?

希望我很清楚

感谢帮手

在定义引用时, ref属性必须与模型定义中的模型名称完全匹配,否则会出现错误。 ref值应该是一个string,而不是像你所做的那样,所以正确的方法应该是

 genres: [{type: Schema.ObjectId, ref: 'Genre'}] 

当您读取数据时,Mongoose人口通过其populate()函数使文档的读取非常简单。 因此,例如,要显示特定用户的引用stream派,请使用string中该字段的名称作为参数调用populate()方法,例如

 User.findOne({"name": "Tom"}) .populate("genres") .exec(err, user) { ... }