【问题标题】:find not working on mongoose document发现不适用于猫鼬文档
【发布时间】:2016-12-14 17:26:43
【问题描述】:

我的模型是这样的

/* models/songs.js */
var mongoose = require('mongoose');

var SongsSchema = new mongoose.Schema({
    genres: [ String ],
    popularity: Number,
    trackId: String,
    artistIds: [ String ],
    users: [ String ],
    trackName: String // human readability
});

var Songs = mongoose.model("Songs", SongsSchema);

module.exports = {
  Songs: Songs
};

这是我的路线中的内容

/* routes/index.js */
var mongoose = require('mongoose');
var Songs = mongoose.model('Songs');

router.get('/api/genre', function(req, res, next) {
  var genre = req.query.genre.replace(/%26/, '&');
  genre = req.query.genre.replace(/-/g, ' ');

  console.log('attempting to find', genre);
  Songs.find({
    genres: genre
  }, function(err, songs, count) {
    console.log('count', count);
    console.log('songs', songs);

    res.json(songs.map(function(song) {
      console.log('hello ', song);
      return song.trackId;
    }));
  });
});

"attemping to find" 可以很好地注销,但是 Songs.find 回调中的所有行都没有注销任何内容。关于这一点的奇怪部分是它没有给我任何错误。另一个奇怪的事情是,我还尝试在routes/index.js 的其他部分使用 Songs.find,它们工作正常。我还尝试在我的歌曲文档中使用findOne 和其他功能,但它们似乎不起作用。我也尝试过查看其他 StackOverflow 问题,但似乎没有一个有我的答案。

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    find 查询中的 callback 有 2 个参数,first 一个是 errorsecond 一个是 array of mathced documents

    在您的查询中,您提供了 3 个参数。将其更改为 2 看看是否可行。我想,它会正常工作。

    对于count,您可以使用songs.length

    这样做:

    Songs.find({
        genres: genre
      }, function(err, songs) {
        console.log('count', songs.length);
        console.log('songs', songs);
    
        res.json(songs.map(function(song) {
          console.log('hello ', song);
          return song.trackId;
        }));
      });
    

    【讨论】:

      【解决方案2】:

      试试这个

      Songs.find({
        genres: genre
      }).exec(function(err, songs) {
          console.log('songs', songs);
          res.json(songs.map(function(song) {
            console.log('hello ', song);
            return song.trackId;
          }));
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-18
        • 2013-06-24
        • 2016-10-06
        • 2021-12-18
        • 2017-11-07
        • 2013-11-01
        • 2017-12-05
        • 1970-01-01
        相关资源
        最近更新 更多