如何发布和更新模式数组中的模式并打印它?
你好,我是新的节点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) { ... }