您好,我是Node 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;
首先,我想知道它的方式吗?有更好的办法吗?
当我按邮递员发布用户时,该用户正在添加,但是我没有完整的体裁,我不知道它是否保存正确
这是我发布的json
{
"name":"erez",
"age": "23",
"password":"erez1234",
"email":"[email protected]",
"gender":"Male",
"genres": ["57285fe32c3c15e40c000001"] /// what should be here? is it right?
}
这是获取用户json
[
{
"_id": "572874be9b43cb4834000002",
"name": "erez",
"age": "23",
"password": "yaniv1234",
"email": "[email protected]",
"gender": "Male",
"__v": 0,
"genres": [
"57285fe32c3c15e40c000001"
]
}
]
如果它是正确的,我如何可以将所有类型的完整用户发送给获得用户?
希望我足够清楚
谢谢你的帮手
定义引用时,ref
属性必须与模型定义中的模型名称完全匹配,否则会出现错误。该ref
值应该是一个字符串,而不是您已经做过的对象,因此正确的方法应该是
genres: [{type: Schema.ObjectId, ref: 'Genre'}]
当您读取数据时,猫鼬填充功能使其可以非常直接地读取文档populate()
。因此,例如,要显示特定用户的参考流派,请populate()
使用字符串中该字段的名称作为参数来调用该方法,例如
User.findOne({"name": "Tom"})
.populate("genres")
.exec(err, user) { ... }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句