我有3个不同模式的文件。用户有很多笔记本,笔记本有很多笔记。模式示例:
用户架构:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var User = new Schema({
username: { type: String, require: true, index: { unique: true }, trim: true},
password: { type: String, require: true, select: true },
age: { type: Number, min: 0 },
firstname: String,
secondname: String,
token: String,
role: String,
city: String,
rememberMe: Boolean
});
module.exports = mongoose.model('User', User);
笔记本架构:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
Note = require('./note'),
User = require('./user');
var NoteBook = new Schema({
creator: { type:Schema.ObjectId, ref:"User"},
name: String,
description: String
});
NoteBook.methods.getAllNotes = function(cb) {
Note.find({notebook: this}, function(err, noteList){
cb(noteList);
});
};
module.exports = mongoose.model('NoteBook', NoteBook);
注意模式:
var mongoose=require('mongoose'),Schema=mongoose。图式;
var NoteSchema = new Schema({
notebook: { type: Schema.Types.ObjectId, ref: 'NoteBook'},
name: String,
description: String,
content: String
});
module.exports = mongoose.model('Note', NoteSchema);
我得到了请求userId,我需要打包所有这行数据。使用笔记本电脑的用户,以及使用笔记本电脑的用户。我玩过这样的游戏:
函数getTree(req,res){
var data = [];
User.findOne({_id: req.body.userId}, function(err, user) {
NoteBook.find({creator: user._id}, function(err, notebookList) {
for (var idx in notebookList) {
Note.find({notebok: notebookList[idx]._id}, function(err, noteList) {
var children = [];
for (var noteIdx in noteList) {
children.push({
'text': noteList[idx].name,
'a_attr' : {
'data-node-type': 'note',
'data-node-id': noteList[idx]._id,
},
});
}
data.push({
'text': notebookList[idx].name,
'a_attr' : {
'data-node-type': 'notebook',
'data-node-id': notebookList[idx]._id,
},
'children': children
});
});
}
res.json({ tree: data });
});
});
}
但它不起作用。
var async = require("async");
function getTree(req, res) {
var data = [];
User.findOne({_id: req.body.userId}, function(err, user) {
NoteBook.find({creator: user._id}, function(err, notebookList) {
async.forEach(notebookList, function(notebook, callback){
Note.find({notebok: notebook._id}, function(err, noteList) {
var children = [];
for (var noteIdx in noteList) {
children.push({
'text': noteList[idx].name,
'a_attr' : {
'data-node-type': 'note',
'data-node-id': noteList[idx]._id,
},
});
}
data.push({
'text': notebookList[idx].name,
'a_attr' : {
'data-node-type': 'notebook',
'data-node-id': notebook._id,
},
'children': children
});
});
}, function(err){
res.json({ tree: data });
});
});
});
}
本文向大家介绍mongoose 安装,包括了mongoose 安装的使用技巧和注意事项,需要的朋友参考一下 示例 安装猫鼬就像运行npm命令一样简单 npm install mongoose --save 但是,请确保您也已MongoDB为您的操作系统安装或可以访问MongoDB数据库。 连接到MongoDB数据库: 1.将猫鼬导入应用程序: 2.指定一个Promise库: 3.连接到MongoD
Mongoose似乎不支持Mongo DBREF。显然,他们发布了“dbref”支持,但它实际上只是简单的引用(不具备引用不同集合中的文档的能力)。我终于创建了一个模式,允许我保存ObjectID引用的数组并填充它们,这对于我的模式的某些部分是很好的,但是如果我可以使用适当的DBREF创建一个数组,允许我引用来自多个集合的文档,那将是非常方便的。 幸运地(?)有一个模块可以在Mongoose中修补
是否可以将C函数包装成“另一个”?(当然只有宏) 类似于: 那么,上述做法安全吗?
问题内容: 我正在用Node.js和Mongoose准备数据库创建脚本。如何检查数据库是否已经存在,如果存在,请使用Mongoose删除(删除)该数据库? 我找不到一种将其与猫鼬放在一起的方法。 问题答案: 没有办法从猫鼬中删除一个集合,最好的办法是删除其中一个的内容: 但是有一种方法可以访问mongodb本机javascript驱动程序,该驱动程序可用于 警告 尝试备份之前进行备份,以防万一出问
问题内容: 我有一个采用InputStream并从中读取数据的方法。我也想将此方法与ByteBuffer一起使用。有没有办法包装ByteBuffer以便可以将其作为流访问? 问题答案: JDK中什么都没有,但是有很多实现,谷歌提供ByteBufferInputStream。基本上,它们包装一个或多个ByteBuffer并跟踪其中的索引,该索引记录已读取的数量。事情是这样来涨了不少,但显然是越野车,
问题内容: 尽管这里有一个相同的问题,但是我找不到我的问题的答案,所以这里是我的问题: 我正在使用mocha和chai测试我的node js应用程序。我正在用sinion封装功能。 当我尝试运行此测试时,它给了我错误 我也尝试过 在每个描述中,但仍然给我相同的错误。 问题答案: 您应该恢复in 功能,请按以下方法尝试。