2015-05-14 2 views
0

у меня есть следующие модели: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 }, 
}) 

теперь я хочу, чтобы получить цену, используя мангуст, и я не уверен, какую команду я должен использовать.

Я пробовал:

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

и он не работает, я получаю неопределенный даже через другие вопросы, в том же файл я могу получить «доставку».

Получения вида груза работает с помощью следующей команды:

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

Могу ли я использовать неправильную команду?

+0

'price' не является массивом, так почему бы вам просто не получить доступ к его значению непосредственно как 'request.price'? – JohnnyHK

ответ

0

Вы должны быть в состоянии использовать выберите метод следующим образом:

// 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. 
}); 
+0

Спасибо за ответ. К сожалению, эти методы не работают для того, что я пытаюсь сделать сейчас. Я ищу больше для чего-то вроде: var shipping = _.first (_. Where (request.shipping, {type: shippingType})); . Это дает мне тип доставки обратно, но почему-то это не работает по цене ... – user3464679

+0

Как вы получаете запрос «запрос» Mongoose? – chridam

0

Во-первых, вам нужно создать схему так:

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 }, 
}); 

После этого вам необходимо скомпилировать новую схему и добавить ее в базу данных:

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

При создании модели, можно выполнить запрос (найти или findOne):

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

Полный код:

var mongoose, Schema; 

mongoose = require("mongoose"); 
Schema = mongoose.Schema; 

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 }, 
}); 

items = mongoose.model("Items", items); 

items.findOne({price: request.price}, function (error, item) { 
    if (error) { 
     console.log(error); 
    } else { 
     console.log(item); 
    } 
}); 
Смежные вопросы