gpt4 book ai didi

javascript - Mongoose,对象中的数组

转载 作者:行者123 更新时间:2023-12-03 08:46:21 24 4
gpt4 key购买 nike

更新:这个问题似乎与 Mongoose 有关。请参阅底部的更新。

在父级中,我使用以下代码将 choosenItem 传递给孙子:

childContextTypes: {
foo: React.PropTypes.object.isRequired,
},

getChildContext: function() {
return { foo: this.state.choosenDriver }
},

choosenDriver 是一个 mongoose 模型,如下所示:

var Schema    = mongoose.Schema;
var driverSchema = new mongoose.Schema({

driver: String,
age: String,
cars: [{ type: Schema.Types.ObjectId, ref: 'Car' }]

});
module.exports = mongoose.model('Driver', driverSchema);

这工作正常,在 GrandChild 中我可以执行以下操作:

contextTypes: {
foo: React.PropTypes.object.isRequired,
},

//some other stuff...

render: function(){
return (
<h1>{this.context.foo.name}</h1>
)
});

这会显示choosenDriver的名称。

我还想遍历汽车并认为可以这样做:

render: function(){

var cars = new Array(this.context.foo.cars);
var driversCars = cars.map(function(car,i){
return <li key={i}> {car} </li>;
});
return (
<div>
<h1>{this.context.foo.name}</h1>
<ul>{driversCars}</ul>
</div>

)
}

});

这将返回所有驾驶员汽车,并以字符串形式显示在一行上。我查看了 React Developers 工具,发现 cars 没有定义为数组。

这可能是因为 choosenDriver 是一个 state 并且以这种方式不支持数组?

这些汽车显然存在,但不是作为数组。

关于如何在此示例中以数组形式访问汽车有什么想法吗?

谢谢!

更新:

当在react-Tools中查看this.context.foo.cars时,我看到了这个:

cars: 
->_proto_ :{..}
0: "4242594395935934",
1: "3543435095340509"
etc...

cars should be an Array so I would expect to see:
cars: Array[4]

尽管在数据库中一切g看起来都应该是这样:

"cars":["5607b0747eb3eefc225aed61","5607b07a7eb3eefc225aed62","5606bf4b0e76916c1d1668b4","5607b07a7eb3eefc225aed62"]}]

最后更新:在这里,他们彼此相邻,我使用react工具:(我有一个驱动程序列表,这表明驱动程序对象在被选择时会发生变化)

State:
choosenDriver: {..}
_v:0
_id: "235345353453"
name: "Roger"
cars:
->_proto_ :{..}
0: "4242594395935934",
_id: undefined


Same driver but not choosen:
drivers: array[3]
->0: {}
->1: {}
_v: 0
_id: "4242594395935934"
cars: Array[1]

所以当数组被选中时会发生一些事情。奇怪...

最佳答案

如果您的意思是 cars 不是您期望的数组(也不是 this.context.foo.cars)...

数组构造函数构建一个数组,并将构造函数的每个参数作为返回数组中的元素。

因此,new Array([1,2,3]) 为您提供:[[1,2,3]]

您想要 Array.from([1,2,3]) ,它会给您 [1,2,3] 这似乎是您想要的。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

但是对于您的代码,为什么不能跳过创建中间数组并直接调用 this.context.foo.cars.map(...)

关于javascript - Mongoose,对象中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com