我目前在为下面的文档创建模式时遇到了问题。服务器的响应总是以[Object]的形式返回"trk"字段值。不知何故,我不知道这应该如何工作,因为我尝试了至少所有对我有意义的方法;-)
如果这有帮助的话,我的Mongoose版本是3.6.20和MongoDB 2.4.7,在我忘记之前,最好也将其设置为Index(2d)
原始数据:
{
"_id": ObjectId("51ec4ac3eb7f7c701b000000"),
"gpx": {
"metadata": {
"desc": "Nürburgring VLN-Variante",
"country": "de",
"isActive": true
},
"trk": [
{
"lat": 50.3299594,
"lng": 6.9393006
},
{
"lat": 50.3295046,
"lng": 6.9390688
},
{
"lat": 50.3293714,
"lng": 6.9389939
},
{
"lat": 50.3293284,
"lng": 6.9389634
}]
}
}
Mongoose方案:
var TrackSchema = Schema({
_id: Schema.ObjectId,
gpx: {
metadata: {
desc: String,
country: String,
isActive: Boolean
},
trk: [{lat:Number, lng:Number}]
}
}, { collection: "tracks" });
Chrome中Network标签的响应总是这样(这只是trk部分的错误):
{ trk:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
我已经尝试了不同的Schema定义"trk":
- trk:架构.类型.混合
- trk:[架构.类型.混合]
- trk:[{类型:[编号],索引:"2d "}]
希望你能帮助我;-)
6条答案
按热度按时间xmjla07d1#
您可以通过以下方式声明trk:- 要么
或
trk : { type : Array , "default" : [] }
在第二种情况下,在插入过程中创建对象并将其推入数组,如下所示
也可以通过以下方式设置对象的Array
xqnpmsa82#
我对 Mongoose 也有类似的问题:
实际上,我在模式中使用“type”作为属性名:
要避免该行为,必须将参数更改为:
b4qexyjb3#
为了在模式中创建数组,我们必须再创建一个模式
monetizationSchema
,用于一次存储一个数据,另一个模式为blogSchema
,我们有一个monetization
字段,其中包含monetizationSchema
,用方括号括起来作为数组。Schema
,用于一次存储一个数据。以
monetization
作为数组的架构。sqserrrh4#
可以按如下方式声明数组
但是它将把
[]
(空数组)设置为默认值。如果不希望使用此默认值,然后覆盖此默认值,则需要将默认值设置为
undefined
,如下所示zxlwwiss5#
我需要解决的问题是存储包含几个字段的合同(地址,图书,天数,借款人地址,blk数据),blk数据是一个交易列表(区块号和交易地址)。这个问题和答案帮助了我。我想分享我的代码如下。希望这能有所帮助。
1.方案定义。请参阅blk_data。
1.在MongoDB中为集合创建一条记录,参见blk_data。
1.更新记录。请参阅blk_data。
xmakbtuz6#
感谢您的回复。
我尝试了第一种方法,但没有任何变化。然后,我尝试记录结果。我只是一级一级地向下钻取,直到我最终到达数据正在显示的地方。
过了一会儿我发现了问题:当我发送响应时,我通过
.toString()
将其转换为字符串。我修好了,现在它工作得很出色。抱歉误报了。