我正在尝试在javascript的对象中获取值,但它以某种方式失败。我设法通过findOne方法从mongoDB获取预期数据。这是我的代码和控制台日志。
int
然后控制台说:
对象{_id:“bpMgRnZxh5L4rQjP9”,文字:“你喜欢苹果吗?”}
我想要的只是对象中的文字。我已经尝试过了。
const title = Questions.findOne({_id: props.match.params.id});
console.log(title);
但我无法访问它......错误信息如下。
未捕获的TypeError:无法读取未定义的属性“text”
这听起来很容易,但我不能靠自己来解决。谁能帮助我?
附加背景 我正在使用Meteor和React。我想将对象内部的文本从容器传递给类。我想在render()中呈现文本。但它没有从容器中接收任何数据......容器中的console.log运行良好并显示对象。
console.log(title.text);
console.log(title[text]);
console.log(title["text"]);
console.log(title[0].text);
答案 0 :(得分:0)
这里的问题是,在安装容器时,数据尚不可用。由于我没有在您的容器中看到任何订阅,我假设您在其他地方处理,因此无法知道数据何时准备就绪。你有2个选择。
1)将订阅移动到容器中并使用订阅句柄ready()
函数来评估数据是否准备就绪。显示微调器或其他东西。阅读this。
2)使用lodash / get函数(docs)来处理空道具。你需要
npm install --save lodash
然后
import get from 'lodash/get';
然后在你的类渲染方法中:
render() {
const text = get(this.props, 'title.text', 'you-can-even-define-a-default-value-here');
// then use `text` in your h1.
return (...);
}
这对你有用吗?