如何获取子文件只在mongoose?
我试图从数组中提取只有子文档具有以下架构:
const UserSchema = Schema({ name: { type: String },library:[{ story:{type: Schema.Types.ObjectId,ref: 'Story'} }], });
我试图使用:
module.exports.getUserStories = function(userId, callback){ User.findOne({_id: userId },callback) .select('library.story') };
并给出了这个结果:
{ "_id": "5949615072e15d2b34fa8f9d", "library": [ { "story": "592ae46cf2a0ba2b208cb092" }, { "story": "592ae608df26d80790092fe9" }, { "story": "592ae46cf2a0ba2b208cb092" } ] }
但我期望得到的只是这个:
[ { "story": "592ae46cf2a0ba2b208cb092" }, { "story": "592ae608df26d80790092fe9" }, { "story": "592ae46cf2a0ba2b208cb092" } ]
我已经尝试使用双重select,如:
module.exports.getUserStories = function(userId, callback){ User.findOne({_id: userId },callback) .select('library.story') .select('story') };
但是是一样的结果
试试这个:
module.exports.getUserStories = function(userId, callback){ User.find({_id: userId },{'library.story'}).then(function(user){ if(user){ callback(user.library); }}); };
文档在这里
这个输出预计会通过“select”返回,但是您可以根据需要准备返回的数据,如下所示:
User.findOne({_id: userId }).select('library').then(function(result){ if(result){ //If there is returned item var stories = result.library; //Continue ... } },function(error){ //Error handling })
- mysql的nodeJS结果是json格式
- 如何从服务器(Node JS和Express)接收和使用客户端的JSON对象?
- 将Json发送到nodejs服务器
- 使用Node查询从API查询返回的JSON中的项目
- 使用NodeJS从json数组中查找项目
- 使用push()和for循环的Javascript JSONArray问题
- XMLHttpRequest无法加载。 请求的资源上没有“Access-Control-Allow-Origin”标题。 因此,原产地不得进入
- 尝试从Node.js插入文档到CouchDB时,出现“bad_request invalid_json”错误
- asynchronous查询JSON对象