我有一个小问题。我有一个用户架构,其中包含一个重定向到表架构的表字段。 Table元素可以包含一个名称,我希望这个名称对于每个用户是唯一的,而不是在User之间。
实施例: 用户1 - > Table1.name:" foo" User2 - > Table1.name:" foo"
但是这个User1 - > Table2.name:" foo"不可能。
这是用户架构:
var UserSchema = new mongoose.Schema({
username: { type: String, required: true, index: {
unique: true } },
email: { type: String, required: true, index: {unique: true } },
password: { type: String, required: true },
tables: [{ type: Schema.Types.ObjectId, ref: 'Table' }],
resetPasswordToken: String,
resetPasswordExpires: Date,
uuid: String,
});
这是表架构:
var TableSchema = Schema({
name: { type: String, required: true, index: { unique: true }},
logos: [{ type: Schema.Types.ObjectId, ref: 'Logo'}],
});
这就是我查询的地方:
app.post('/newTab', function(req, res){
var use = req.user.username;
var newTab = new Table({
name: req.body.name,
});
newTab.save(function(err, docs){
if (err)
{
console.error(err);
res.writeHead(500);
res.end();
}
else
{
User.findOne({username: req.user.username}, function(err, docs) {
if(err) {throw (err);}
else
{
docs.tables.push(newTab);
docs.save(function(err, docs){
if (err) return console.error(err);
res.writeHead(200);
res.end(userId);
});
}
});
}
});
目前,我无法为两个不同的用户添加相同的表名。 我也尝试过稀疏索引的东西,但不知道它是如何工作的