- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的架构:
Account: mongoose.model('Account', new Schema({
account_name: String,
company: String,
notes: String,
contact_info: [this.ContactInfo]
})),
ContactInfo: mongoose.model('ContactInfo', new Schema({
name: String,
email: String,
phone: String,
notes: String
}))
当我尝试对 contact_info 执行任何操作时,它说这些方法不存在。
var c = new ContactInfo...);
var a = new Account(...);
a.contact_info.create(c); //error, create doesn't exsit
a.contact_info.push(c); //works
a.contact_info.id(...).remove(); //id doesn't exist
我做错了什么吗?
我的完整代码在这里(不是太多):https://github.com/nycitt/node-survey-builder-api-server/blob/master/accounts.js
顺便说一句,我正在接收来自 Backbone.js 的输入
最佳答案
您的问题可能在 schemas.js
范围内。当通过文字定义对象时,this
不会引用正在定义的对象:
// ...
contact_info: [this.ContactInfo]
// ...
它将引用文字周围的上下文 - 在 Node 模块的情况下, exports
object -- 没有 ContactInfo
属性。所以,结果是:
// ...
contact_info: [undefined]
// ...
您仍然会有一个Array
,这就是push
可用的原因。但是,Mongoose 不知道将其设为 MongooseDocumentArray
,因此它不会有 id
、create
等方法。
您必须在对象外部定义模型才能引用它们。另请注意顺序的变化:
var ContactInfo = mongoose.model('ContactInfo', new Schema({
// ...
});
var Account = mongoose.model('Account', new Schema({
// ...
contact_info: [ContactInfo]
});
module.exports = {
Account: Account,
ContactInfo: ContactInfo
};
或者,将它们附加到exports
,以便设置this.ContactInfo
(相同顺序):
exports.ContactInfo = ...;
exports.Account = ...;
关于node.js - 在 Mongoose 中,如何在具有 .create()、.id() 和 .remove() 功能的模型中创建 MongooseArray/Collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956738/
我正在尝试使用 mongoose 的内置 indexOf() 方法来查看文档数组中是否存在对象 ID。但它似乎不适用于对象 ID,尽管文档说它应该。 var UserSchema = new Sche
我的架构: Account: mongoose.model('Account', new Schema({ account_name: String, company: String,
我是一名优秀的程序员,十分优秀!