- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 .create() 插入子文档,并使用 .id() 查询所述文档。我一直在关注指南 here
我收到错误:对象没有方法“id()”或“create()”
下面是我的代码:
/db/schemas/AnnouncementsSchema.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var postSchema = new Schema({
title: String,
dateCreated: String,
dateEdited: { type: Date, default: Date.now() },
summary: String,
body: String
});
var announcementsSchema= new Schema({
categoryName: String,
posts: [postSchema]
});
announcementsSchema.methods.Update = function (callback) {
console.log('Updating object: ' + this);
this.save(function (err, object) {
callback(err, object);
});
}
var announcements = mongoose.model('announcements', announcementsSchema);
var post = mongoose.model('post', postSchema);
module.exports = {
announcements: announcements,
post: post
};
/routes/Announcements.js
var mongoose = require('mongoose');
var announcementsSchema = require('../../db/schemas/AnnouncementsSchema.js');
exports.InsertPost = function (req, res) {
var announcements = announcementsSchema.announcements;
var post = announcementsSchema.post;
var categoryToEdit = req.body.categoryToEdit;
var newPost = req.body.newPost;
announcements.GetById(categoryToEdit._id, function (err, announcment) {
var postToAdd = new post(newPost);
announcment.posts.create(postToAdd);
announcment.Update(function (err, object) {
res.send({ err: err, data: object});
});
});
}
我包装了 .save 方法,因此我可以在需要时添加额外的功能。当它调用 .create() 时我崩溃了。如果我也尝试删除帖子,情况也是如此。下面是代码:
exports.DeletePost = function (req, res) {
var announcements = announcementsSchema.announcements;
var categoryId = req.body.categoryId;
var postId = req.body.postId;
announcements.findById(categoryId, function (err, object) {
var postToDelete = object.posts.id(postId);
console.log(postToDelete);
res.end();
});
}
无论哪种方式,他们都崩溃了,谷歌的答案非常渺茫。大多数人都提供了多种不同的方法来公开模式和模型,而我上面的内容几乎是他们建议的内容的总和。有任何想法吗?谢谢!
最佳答案
我一直在玩弄这个之后找到了答案。这很简单。声明架构的顺序很重要。所以我必须在声明我的父架构之前声明我的子文档架构。如:
var announcementsSchema= new Schema({
categoryName: String,
posts: [postSchema]
});
var postSchema = new Schema({
title: String,
dateCreated: String,
dateEdited: { type: Date, default: Date.now() },
summary: String,
body: String
});
这成功了!我现在能够保持所有其余代码不变,但现在方法存在了!
关于javascript - NodeJS - Mongoose ,subdoc 对象没有方法 .id() 或 .create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819346/
我正在使用此代码从特定文档中获取子文档 DocumentFragment result= bucket.async().lookupIn(docId).get(subDocId).execute()
您好,我在推送新子文档之前检查子文档是否存在时遇到此问题。 var UserSchema = new Schema({ name : String, app_key
我有以下模型: var Customer = mongoose.model('Customer', { firstname : String, lastname : String,
我目前设置了以下 Mongoose 模型: var Customer = mongoose.model('Customer', { firstname : String, lastna
例如,有一个名为 test 的集合,其中包含以下文档: { "_id" : ObjectId("5692ac4562c824cc5167379f"), "list" : [
我正在尝试做什么。 我有一个包含 operationCountSchema 对象列表的 userSchema。我想要做的是创建一个静态方法来更新这些操作计数子文档之一上的 count 字段(如果它存在
假设我有一个名为 LeagueSchema 的架构,它需要包含有关联赛的一些一般信息(例如名称、创建时间等)以及一些更复杂的对象(例如成员(member)资格)。因为这些成员(member)在联盟之外
我正在尝试使用 .create() 插入子文档,并使用 .id() 查询所述文档。我一直在关注指南 here 我收到错误:对象没有方法“id()”或“create()” 下面是我的代码: /db/sc
我是一名优秀的程序员,十分优秀!