【问题标题】:How to limit the numbers of objects displayed?如何限制显示的对象数量?
【发布时间】:2019-11-01 03:39:46
【问题描述】:

如何限制通过 Mongoose 显示的结果?我只想显示我的结果数组的前 5 个对象,包含在 Carauction Schema 中:

router.get('/app/:cars_getroute', ensureAuthenticated, (req, res, next) => {
Promise.all([Car.findOne({ cars_getroute: req.params.cars_getroute }), Carauction.findOne({ cars_getroute: req.params.cars_getroute }), Carauctionstats.findOne({cars_getroute: req.params.cars_getroute})])
    .then(result => {
        const [cars, carauctions, carauctionstats] = result;

        if (User.isCharged = true) {
            res.render('app/fichecar', {
                results: carauctions.results,
        })...

我的架构:

const CarauctionSchema = new Schema({
    objectID: {
        type: Number
    },
    cars_getroute: {
        type: String
    },
    gm_url: {
        type: String
    },
    "results": {
        type: [{
            marque: {
                type: String
            },
            model: {
                type: String
            }...}]
    }

我想限制为 10 个结果对象。我试过 Carauction.find(carauctions.results).limit(10) 但它不起作用。

然后我用把手渲染结果项:

{{#each results as |auction|}}

                    <a target="_blank" rel="noopener noreferrer" href="{{auction.auction_url}}" class="results__box--hover">
                        <div class="results__container--box">
                            <div class="results__container--img">
                                <img src="{{auction.image_urls}}">
                            </div>
                            <div class="results__container--left">
                                <div class="results__container--model">
                                    <span>{{auction.model_year}} {{auction.marque}} {{auction.model}}</span>
                                </div>
                                <div class="results__container--auction">
                                    <span class="results__auction_house">{{auction.auction_house}}</span>
                                    <span>{{auction.auction_country}}</span>
                                    <span class="results__auction_date">{{auction.auction_date}}</span>


            {{/each}}

【问题讨论】:

  • if(User.isCharged = true) { 没有按照您的预期进行。您应该将其更改为:if(User.isCharged == true) {if(User.isCharged) {

标签: node.js express mongoose


【解决方案1】:

您可以使用carauctions.results.slice(0,10) 限制结果。这将输出最多 10 个项目,但如果少了也不会造成问题。

【讨论】:

  • 谢谢!它不起作用(500 错误),因为我忘了说我用把手显示在 HTML 中的每个结果。我不确定这是不是原因,但我编辑了我的问题。
  • 能否提供 HTTP 500 的控制台输出?
  • 好的,你的解决方案对我的主要问题有好处,但你对 isCharge = true 的精确度不是。这是错误。非常感谢!
  • isCharge = true 是一个作业。它将值更改为 true,而不是与 true 进行比较。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
相关资源
最近更新 更多