私はFile
と呼ばれるマングース(4.8.1)スキーマを持っています。各ファイルはワークスペースに属します。各ワークスペースはプライベートでもプライベートでもありません。ネストされたmongooseオブジェクトのクエリ属性
私は、ワークスペースがプライベートであるかどうかをチェックして、ワークスペース内のファイルを見ることを許可します。私のマングーススキーマは:
var File = new mongoose.Schema({
filename: {
type: String,
required: true
},
workspaceId: {
type: String,
required: true,
ref: 'Workspace'
}
});
var Workspace = new mongoose.Schema({
name: {
type: String,
required: true
},
isPrivate: {
type: Boolean,
default: true
},
})です。
だから最初のオフ、私はワークスペース内のすべてのファイルを取得します:正しい(theresのワークスペース内に一つだけのファイル)である
[ { __v: 1,
_id: 589afc46012a0d0e7c3f4e55,
filename: 'file-1486552134649.txt',
workspaceId: '589af17765b3bd72213c6fcb'
} ]
:
File.find({
workspaceId: workspaceId
})
.exec().then(function(filesDb){
console.log('filesDb are ', filesDb);
}
私はで終わります。
ワークスペースは、プライベートではありませんので、私は最初workspaceIdを移入:
File.find({
workspaceId: workspaceId
})
.populate('workspaceId')
.exec().then(function(filesDb) {
console.log('filesDb are ', filesDb);
})
と私は正しくで終わる:
[ { __v: 1,
_id: 589afc46012a0d0e7c3f4e55,
filename: 'file-1486552134649.txt',
workspaceId:
{ __v: 1,
_id: 589af17765b3bd72213c6fcb,
isPrivate: false,
}
}
]
だから今、私は、ファイルから来ていることを確認します非公開のワークスペース:
File.find({
workspaceId: workspaceId
})
.populate('workspaceId')
.find({
'workspaceId.isPrivate': false
})
.exec().then(function(filesDb) {
console.log('filesDb are ', filesDb);
})
しかし、filesDb
は終了します。空の配列。
.find({
workspaceId: {
isPrivate: false
}
})
しかし、これは関係なく、ワークスペースがプライベートであるかどうかのファイルを返します。
は、私はそのようなfind
に変更するなど、他のものを試してみました。
どのようにして、ネストされたオブジェクトの属性をクエリできますか?