这是我正在使用的代码:
ref.get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());
}
}
});
Android Studio突出显示错误的方法如下:
据我对此answer的理解:
成功完成的任务永远不会超过
null
的{{1}}。
如何在不检查无效性的情况下解决此问题?谢谢!
答案 0 :(得分:4)
为什么Android Studio指示对象在对象时可能为null 不能吗?
因为皮棉不知道。 router.get('/backoffice/moderateur/organismes/export/:status', checkAuth, checkProfile('moderateur'), tryAndCatch(async (req, res) => {
let codeRegion = req.user.codeRegion;
let { status } = await Joi.validate(req.params, {
status: Joi.string().allow(['all', 'active', 'inactive']).default('all'),
}, { abortEarly: false });
let stream = await db.collection('accounts').find({
profile: 'organisme',
codeRegion: codeRegion,
...(status === 'all' ? {} : { passwordHash: { $exists: status === 'active' } }),
}).stream();
// const organismes = await db.collection('accounts').find({
// profile: 'organisme',
// codeRegion: codeRegion,
// ...(status === 'all' ? {} : { passwordHash: { $exists: status === 'active' } }),
// }).toArray();
res.setHeader('Content-disposition', 'attachment; filename=avis.csv');
res.setHeader('Content-Type', 'text/csv; charset=iso-8859-1');
let lines = 'SIRET;EMAIL;NOM\n'
res.write(lines);
// organismes.forEach(organisme => {
// lines += organisme.SIRET + ';' +
// organisme.courriel + ';' +
// comment.courriel + '\n';
// });
let handleError = e => {
logger.error('An error occurred', e);
res.status(500);
stream.push(Boom.boomify(e).output.payload);
};
stream
.on('error', handleError)
.pipe(transformObject(async organisme => {
return organisme.SIRET + ';' +
organisme.raisonSociale + ';' +
organisme.courriel + '\n';
}))
.pipe(encodeStream('UTF-16BE'))
.pipe(res);
// res.send(organismes);
}));
通常可以返回null,这就是您看到警告的原因。 Lint执行基本检查,不知道有关Firebase API的详细信息。您甚至可以使用Java Core API重现此行为。
如何在不检查无效性的情况下解决此问题?谢谢!
如果您100%确信它永远不能为null,则可以使用
@SuppressWarnings(“ ConstantConditions”)
但是我不建议这样做,因为您不知道Firebase API将来是否会更改。也许Firebase的下一版本将允许返回null。