gpt4 book ai didi

javascript - 在 Node.js 应用程序中引用自定义架构时出错

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:38 24 4
gpt4 key购买 nike

这里是 Node.js 新手...我有两个模式,并且我在另一个模式中引用一个模式。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

/*Model for user settings */

var SettingsSchema = new Schema({
shoppingDay: {type: String, default : "Friday"},
shoppingFrequency : {type: String, default : "weekly"},
reminderEmails : {type: Boolean, default : true}
});

module.exports = mongoose.model('Settings', SettingsSchema);

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Settings = require('./Settings.js');
var SettingsSchema = Settings.Schema;

/*Model for user settings */
var UserTrendSchema = new Schema({
email : String,
settings : SettingsSchema
},
{collection : 'UserTrends'});

module.exports = mongoose.model('UserTrend', UserTrendSchema);

我遇到了这个错误

throw new TypeError('Invalid value for schema path `'+ prefix + i +'`');

但是如果我把它变成一个数组,它就可以工作。

settings  : [SettingsSchema]

我不希望它是一个数组。只是一个设置实例。我看到的所有示例都使用其自定义类型作为数组。

我也尝试过

settings  : {type: Schema.Types.ObjectId, ref: 'Settings'}

但它只是在数据库中创建一个带有对象 ID 的条目,不包含默认值

 "settings": {
"$oid": "54ccfdcb5926074c1d53d02f"
},

最好的方法是什么?

最佳答案

如果您不希望设置为数组,您可以将设置保留为对象并将其引用到设置模型。获取时您可以填充设置。

更改:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

/*Model for user settings */

var SettingsSchema = new Schema({
shoppingDay: {type: String, default : "Friday"},
shoppingFrequency : {type: String, default : "weekly"},
reminderEmails : {type: Boolean, default : true}
});

module.exports = mongoose.model('Settings', SettingsSchema);
<小时/>
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

/*Model for user settings */
var UserTrendSchema = new Schema({
email : String,
settings : {type: Schema.Types.ObjectId, ref: 'Settings'} // refers to Settings Model.
},
{collection : 'UserTrends'});

module.exports = mongoose.model('UserTrend', UserTrendSchema);

其中设置将是 objectId 并且可以填充。

希望这有帮助。

关于javascript - 在 Node.js 应用程序中引用自定义架构时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28248628/

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