Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB麻烦了,双向引用是一回事吗?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js MongoDB麻烦了,双向引用是一回事吗?

Node.js MongoDB麻烦了,双向引用是一回事吗?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,所以我有一个用node.js+mongoDB(mongoose)构建的网站。我在数据库的设计上有点麻烦 我想有2个登录,一个为机构和专业人士。我是否需要重复引用他们(比如专业人士引用Inst,机构引用专业人士) 例如,如果我想在登录某个机构时显示所有专业人员的列表,这很简单,但如果我不在用户(专业人员)上引用该机构,则就不那么简单了。那么哪一个更好呢?有代码在每个机构中查找用户并获取其机构名称,或者两者都相互引用,然后进行填充 如果我选择两个相互引用,是否有某种方法可以保证它们始终是链接的,并且

所以我有一个用node.js+mongoDB(mongoose)构建的网站。我在数据库的设计上有点麻烦

我想有2个登录,一个为机构和专业人士。我是否需要重复引用他们(比如专业人士引用Inst,机构引用专业人士)

例如,如果我想在登录某个机构时显示所有专业人员的列表,这很简单,但如果我不在用户(专业人员)上引用该机构,则就不那么简单了。那么哪一个更好呢?有代码在每个机构中查找用户并获取其机构名称,或者两者都相互引用,然后进行填充

如果我选择两个相互引用,是否有某种方法可以保证它们始终是链接的,并且只有单向引用没有中断

代码:


instSchema
合并到
userSchema
中,添加
user\u type
以指示该用户属于哪种类型,
Professional
Institutions
。另外还有一个新的
相关用户
,用于存储其他相关的
用户
文档

var userSchema = new mongoose.Schema({
    username: String,
    password: String,
    email: String,
    name: String,
    created_at: {type: Date, default: Date.now},
    status : Boolean,
    user_type: {type: String, enum: ['Prof', 'Inst']},
    related_user: [{ type:mongoose.Schema.ObjectId, ref:'User'}]
});

mongoose.model('User', userSchema);
var User = mongoose.model('User');

这可能是解决我问题的一个办法,但机构的性质将不同于专业机构。另一方面,我可以将它们引用到另一个具有这些属性的表中。@其次,由于mongodb是无模式的,所以在一个模式中使用一些不同的属性也可以。然而,如果
instSchema
中有许多字段,这可能是个坏主意……如果我有一个新的集合,只有专业属性(如果有的话),另一个集合只有机构属性,然后从用户那里引用这些集合呢?还有一个问题。如果我是专业人士,我必须参考其机构,如果我是机构,我也必须参考该专业人士。
var userSchema = new mongoose.Schema({
    username: String,
    password: String,
    email: String,
    name: String,
    created_at: {type: Date, default: Date.now},
    status : Boolean,
    user_type: {type: String, enum: ['Prof', 'Inst']},
    related_user: [{ type:mongoose.Schema.ObjectId, ref:'User'}]
});

mongoose.model('User', userSchema);
var User = mongoose.model('User');