メールからユーザーにクエリを実行すると、次のようになります。
User.findOne({email: 'a@a.com'}).done(function(err, u){console.log(u.sessionTokens);})
そのトークンリストを取得しました:
[ { token: '8dfe6aa0-2637-4b3f-9a3c-3ae8dc225b77',
issuedAt: Tue Jan 14 2014 14:40:22 GMT+0100 (CET) } ]
しかし、このリスト内のトークンを照会すると、ユーザーが取得されません:
User.findOne({'sessionTokens.token':'8dfe6aa0-2637-4b3f-9a3c3ae8dc225b77'}).done(function(err, u){console.log(u);})
=> undefined
何か案は ?はUser.findOne({'sessionTokens.token':'8d...77'})
正しいクエリですか?
編集
私のユーザーモデルは次のようなものです:
module.exports = {
schema: true,
attributes: {
email: {
type: 'email',
required: true
},
encryptedPassword: {
type: 'string'
},
sessionTokens: {
type: 'array'
},
...
}
}
sessionToken は Array 型の属性です。この配列には、次のようないくつかのオブジェクトが含まれています。
{ token: '8dfe6aa0-2637-4b3f-9a3c-3ae8dc225b77',
issuedAt: Tue Jan 14 2014 14:40:22 GMT+0100 (CET) }
編集
mongo-disk の代わりに mongo-sails でテストしましたが、これは正常に動作していますが、Chad が指摘したように、使用するアダプターによって異なります。