gpt4 book ai didi

javascript - Mongoose 填充排序无法正常工作

转载 作者:行者123 更新时间:2023-12-02 14:48:06 25 4
gpt4 key购买 nike

当我调试问题时,我发现 Mongoose 排序无法正常工作。我删除了我们的代码并进行了简单的测试。你可以运行它看看它会失败。

也许有人以前见过它?也许我错过了什么?

感谢您的帮助!

var mongoose = require('mongoose');
var assert = require('assert');

mongoose.set('debug', true);
mongoose.connect('mongodb://localhost/test');

var CarSchema = new mongoose.Schema({
name: String
});
mongoose.model('Car', CarSchema);

var CarsSchema = new mongoose.Schema({
car: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Car'
},
quantity: Number
});

var OrderSchema = new mongoose.Schema({
suborders: [CarsSchema]
});
mongoose.model('Cars', OrderSchema);

var Car = mongoose.model('Car');
var Cars = mongoose.model('Cars');

Car.create([
{
name: 'Tesla'
},
{
name: 'BMW'
}
], function (err, objs) {

Cars.create({
suborders: [
{
car: objs[1]._id, //BMW
quantity: 1
}, {
car: objs[0]._id, //Tesla
quantity: 2
}
]
}, function (err, order) {

Cars.findById(order._id)
.populate({
path: 'suborders.car',
options: {
sort: '-name'
}
}).exec(function (err, cars) {

assert.equal(cars.suborders[0].car.name, 'Tesla', 'DESC: 0 should be Tesla');
assert.equal(cars.suborders[1].car.name, 'BMW', 'DESC: 1 should be BMW');

assert.equal(cars.suborders[0].quantity, 2, 'DESC: Tesla quantity should be 2');
assert.equal(cars.suborders[1].quantity, 1, 'DESC: BMW quantity should be 1');

});
});
});

最佳答案

这是一个已确认的 Mongoose 错误 here ,并表示不容易修复。 :(

关键现象是前两个断言通过,然后第三个断言失败。

也许您可以更改架构设计或搜索“ Mongoose 子文档排序”之类的内容。 Here是应用aggregate的示例。

关于javascript - Mongoose 填充排序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com