无法将对象从另一个集合插入到新文档中,在表单提交时创建

Unable to insert object from another collection to a new document, created on form submit

我正在使用 formidable 将表单中的字段保存到 mongo 数据库集合中。

模型 ENTRY 的架构是这样的。

const mongoose=require('mongoose');

const entrySchema = mongoose.Schema({

    product:{
        name:{
            type:String,
            required:true
        },
        image:{
            type:String
        },
        // document:{
        //     type:
        // },
        description:{
            type:String
        }
    },
    brand:{
        name:{
            type:String
        },
        logo:{
            type:String
        }

    },
    organisation:{
        name:{
            type:String
        },
        logo:{
            type:String
        },
        phone:{
            type:String
        },
        mobile:{
            type:String
        },
        email : {
            type:String
        }
    },
    category:{

        type : Object
        
    }


},
{
    collection : "entries"
}
)

const Entries = mongoose.model('entry', entrySchema)

module.exports = Entries;

现在 CATEGORY 字段是一个 OBJECT 类型,我想从另一个名为 CATEGORIES 的集合中添加一个对象。我将能够找到 findById,我想将其插入到提交表单时保存的新文档中。

我正在尝试

entry.category=Categories.findById({_id:fields.categoryId});

它不起作用..我似乎遇到了这个错误,虽然我不知道它是否与上述有关或其他原因

Error: key xxxx-shard-00-00.p5yeb.mongodb.net:27017 must not contain '.'
    at serializeInto (/Applications/MAMP/htdocs/xxxx-server/node_modules/bson/lib/bson/parser/serializer.js:816:19)
    at serializeObject (/Applications/MAMP/htdocs/xxxx-server/node_modules/bson/lib/bson/parser/serializer.js:347:18)
    at serializeInto (/Applications/MAMP/htdocs/xxxx-server/node_modules/bson/lib/bson/parser/serializer.js:947:17)

谁能告诉我如何处理这个问题?

这里你使用的是findById所以你只需要传递id值而不是object:

你能试试这个吗:

entry.category = await Categories.findById(fields.categoryId).exec();

不过,如果您想使用该对象,您可以使用 findOne

entry.category = await Categories.findOne({ _id: fields.categoryId}).exec();

您可以在 findById, findOne and Promises

上查看此文档