gpt4 book ai didi

javascript - 在mongoose js中查看数组元素

转载 作者:行者123 更新时间:2023-11-30 17:54:59 26 4
gpt4 key购买 nike

所以我有一个线程的这个模式(它几乎是一个聊天室:)

var threadSchema = mongoose.Schema({
messages: [{
message:String,
type:String
}],
point_id:String
});

我编译成模型如图:

var Thread = mongoose.model('Thread',threadSchema);

我的问题是,当我像这样访问线程对象中的消息元素时:

console.log(thread_instance.messages);

它打印出“[object Object]”。即使我在浏览器中解析它,它也会这样做;它实际上是在返回字符串“[object Object]”。

我相信这与我推送到数组的方式有关:

this_thread.messages.push({message:data.message,type:data.type});

我的写作/阅读方式有什么问题?非常感谢您的宝贵时间。

最佳答案

我认为这里的问题是您的数组包含一个对象,其中一个键是“类型”。 mongoose 使用 type 来告诉它模式中的事物是什么类型,如下所示:

var ExhibitSchema = new Schema({
title : { type: String, trim: true }
, description : { type: String, trim: true }
, discussion : {type: Schema.Types.ObjectId, ref: "Discussion"}
, views: {type: Number, default: 0}

因此,在您的情况下,您是在告诉 mongoose 您有一个字符串类型的 messages 数组。它可能只是忽略了 message:String 部分。当您将内容添加到该数组时,它会调用 toString() 来存储它。这就是为什么您在数据库中看到 [[[object Object]”, “[object Object]” 的原因。

我通过将架构更改为如下所示来修复它:

var threadSchema = mongoose.Schema({
messages: [{
message:{ type: String},
type:{ type: String}
}],
point_id:String
});

关于javascript - 在mongoose js中查看数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244121/

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