猫鼬:来自模型的价值

时间:2015-05-14 09:26:22

标签: node.js mongodb mongoose

我有以下型号:

var requestSchema = new Schema({
  description: { type: String, required: true },
  country: { type: String, index: true },
  shipping: [shipping],
  deliveryLoc: { type: String, index: true },
  price: { type: Number, default: 0 },
})

我现在想用mongoose获取价格,我不确定我必须使用哪个命令。

我试过了:

var pricy = _.first(_.where(request.price));

并且它不起作用,即使通过我可以获得的同一文件中的其他查询也未定义"运送"。

获取送货类型可使用以下命令:

var shipping = _.first(_.where(request.shipping, { type: shippingType }));

我使用了错误的命令吗?

2 个答案:

答案 0 :(得分:0)

您应该能够使用select方法,如下所示:

// find a request 
var query = Request.findOne();

// selecting the `price` field
query.select('price');

// execute the query at a later time
query.exec(function (err, request) {
    if (err) return handleError(err);
    console.log('The price is $%s.', person.price) // The price is $6.92
});

或者如果传递回调:

var Request = mongoose.model('Request', requestSchema);

// find each request with a country matching 'Zimbabwe', selecting the `price` field
Request.findOne({ 'country': 'Zimbabwe' }, 'price', function (err, request) {
     if (err) return handleError(err);
     console.log('The price is $%s.', request.price) // The price is $6.92.
});

答案 1 :(得分:0)

首先,您需要创建这样的架构:

MainWindow

之后,您需要编译新架构并将其添加到数据库中:

var items = new Schema({
  description: { type: String, required: true },
  country: { type: String, index: true },
  shipping: [shipping],
  deliveryLoc: { type: String, index: true },
  price: { type: Number, default: 0 },
});

创建模型后,您可以执行查询(find或findOne):

items = mongoose.model("Items", items); // The table name will be "Items"

完整代码:

items.findOne({price: request.price}, function (error, item) {
  if (error) {
     console.log(error);
  } else {
     console.log(item);
  }
});